Skip to content
Powrót do bloga
Poradniki

Ściągawka curl: 40+ przykładów poleceń HTTP i API

Kompletna ściągawka curl dla programistów: GET/POST, nagłówki, uwierzytelnianie Bearer, wysyłanie/pobieranie plików i testowanie API — ponad 40 gotowych przykładów. Wypróbuj nasze narzędzia.

14 min czytania

Ściągawka curl: 40+ przykładów poleceń HTTP i API

Jesteś trzy przeskoki SSH w głąb maszyny stagingowej, jakieś API zwraca coś nie tak, a jedynym zainstalowanym klientem HTTP jest curl. Albo czytasz skrypt CI, który sprawdza kondycję usługi, i chcesz wiedzieć, co właściwie robi -fsS. Albo współpracownik wkleił jednolinijkowca na Slacku i trzeba go dostosować. curl jest wszędzie, a jego flagi są na tyle zwięzłe, że nikt nie pamięta ich wszystkich.

Ta ściągawka curl powstała dokładnie z myślą o takich chwilach. Najpierw dostajesz tabelę szybkiego odniesienia z kilkunastoma flagami używanymi na co dzień, a potem gotowe do skopiowania przykłady poleceń do każdego typowego zadania: żądania GET i POST, wysyłanie nagłówków, uwierzytelnianie tokenem Bearer, wysyłanie i pobieranie plików oraz testowanie API w skryptach. Każde polecenie korzysta z prawdziwego, działającego adresu URL (httpbin.org lub zastępczego api.example.com), więc możesz je wkleić i wypróbować. Zachowanie opisano w oparciu o oficjalną dokumentację curl oraz RFC 9110, aktualny standard semantyki HTTP.

Szybkie odniesienie — flagi curl, których naprawdę użyjesz

Dziewięćdziesiąt procent codziennego curl to kilkanaście flag. Dodaj tę tabelę do zakładek; reszta przewodnika rozwija każdą z nich na działających przykładach poleceń curl.

FlagZnaczeniePrzykład
-XUstawia metodę HTTPcurl -X DELETE https://api.example.com/items/42
-HDodaje nagłówek żądania (można powtarzać)curl -H "Accept: application/json" https://httpbin.org/get
-dWysyła treść żądania (wymusza POST)curl -d "name=alice" https://httpbin.org/post
--jsonWysyła treść JSON + ustawia nagłówki JSONcurl --json '{"id":1}' https://httpbin.org/post
-FWysyła pole formularza multipart / plikcurl -F "file=@report.pdf" https://httpbin.org/post
-oZapisuje wynik do wskazanego plikucurl -o page.html https://example.com
-OZapisuje pod zdalną nazwą plikucurl -O https://example.com/archive.zip
-LPodąża za przekierowaniamicurl -L https://httpbin.org/redirect/2
-uBasic auth user:passcurl -u alice:s3cret https://httpbin.org/basic-auth/alice/s3cret
-iDołącza nagłówki odpowiedzi do wynikucurl -i https://httpbin.org/get
-IPobiera tylko nagłówki (HEAD)curl -I https://example.com
-vTryb szczegółowy: pokazuje żądanie + uzgadnianie TLScurl -v https://example.com
-sTryb cichy (bez wskaźnika postępu)curl -s https://httpbin.org/get
-wWypisuje zmienne po zakończeniu transferucurl -s -o /dev/null -w "%{http_code}" https://example.com
-bWysyła cookies (ciąg lub plik)curl -b cookies.txt https://httpbin.org/cookies
-cZapisuje otrzymane cookies do plikucurl -c cookies.txt https://httpbin.org/cookies/set/a/1
-kPomija weryfikację certyfikatu TLScurl -k https://self-signed.example.com
--http2Żąda HTTP/2curl --http2 https://example.com
--http3Żąda HTTP/3 (QUIC)curl --http3 https://example.com
-TWysyła plik metodą PUTcurl -T backup.tar https://api.example.com/files/backup.tar
--data-urlencodeKoduje pole treści w URLcurl --data-urlencode "q=hello world" https://httpbin.org/get -G
--max-timeOgranicza łączny czas transferu (sekundy)curl --max-time 10 https://example.com
--connect-timeoutOgranicza nawiązanie połączenia (sekundy)curl --connect-timeout 5 https://example.com
--retryPonawia nieudany transfer N razycurl --retry 3 https://example.com
--limit-rateOgranicza przepustowość transferucurl --limit-rate 2M -O https://example.com/big.iso

Podstawy składni curl — anatomia żądania

Polecenie curl to binarka, kilka flag i adres URL. URL może stać przed flagami lub po nich; curl nie zwraca uwagi na kolejność. Zwraca natomiast uwagę na to, które flagi implikują metodę albo treść, bo te ze sobą oddziałują.

Proste żądanie GET

Bez flagi metody curl wysyła GET. To całe polecenie:

curl https://httpbin.org/get

httpbin odbija żądanie z powrotem jako JSON, co czyni go idealnym do testów. Ciąg zapytania dodajesz tak samo, jak w przeglądarce:

curl "https://httpbin.org/get?page=2&sort=desc"

Ujmij URL w cudzysłów. Goły & mówi powłoce, żeby przenieść polecenie w tło, i po cichu odrzuca wszystko, co po nim — to jeden z najczęstszych błędów z curl, omówiony w sekcji o pułapkach poniżej.

Podgląd odpowiedzi: treść, nagłówki, oba naraz

Domyślnie curl wypisuje tylko treść odpowiedzi. Trzy flagi zmieniają to, co widzisz:

# Treść + wiersz statusu + nagłówki odpowiedzi
curl -i https://httpbin.org/get

# Tylko nagłówki — wysyła żądanie HEAD, bez treści
curl -I https://example.com

# Pełny ślad: wiersz żądania, nagłówki żądania, uzgadnianie TLS, odpowiedź
curl -v https://example.com

Użyj -i, gdy chcesz treść plus szybki rzut oka na Content-Type albo Set-Cookie. Użyj -I, by sprawdzić zasób bez pobierania go (rozmiar pliku, data modyfikacji, cel przekierowania). Po -v sięgaj, gdy coś jest nie tak i trzeba dokładnie zobaczyć, co curl wysłał.

Podążanie za przekierowaniami

curl nie podąża za przekierowaniami, dopóki o to nie poprosisz. Trafisz na URL zwracający 301 lub 302 bez -L i dostaniesz samą odpowiedź przekierowania, a nie cel:

# Zatrzymuje się na 302, nie wypisuje nic przydatnego
curl https://httpbin.org/redirect/1

# Podąża za łańcuchem aż do finalnego 200
curl -L https://httpbin.org/redirect/1

Jeśli nie masz pewności, dlaczego żądanie ląduje tam, gdzie ląduje, -IL pokaże kod statusu każdego przeskoku. Co oznacza każdy z tych kodów — i dlaczego 301 i 302 nie są wymienne — zobacz Kody statusu HTTP ściąga.

Metody HTTP w curl (GET, POST, PUT, PATCH, DELETE)

curl dobiera metodę automatycznie na podstawie flag: -d lub --json implikuje POST, zwykłe adresy URL implikują GET. Z -X korzystaj tylko wtedy, gdy potrzebujesz metody, która nie pasuje do wysyłanej treści.

GET z parametrami zapytania

Budowanie ciągu zapytania ręcznie jest podatne na błędy, gdy tylko wartości zawierają spacje lub &. Flaga -G mówi curl, by dopisał pola --data-urlencode do adresu URL jako poprawnie zakodowany ciąg zapytania:

curl -G https://httpbin.org/get \
  --data-urlencode "q=hello world" \
  --data-urlencode "tag=c++"

Da to ?q=hello%20world&tag=c%2B%2B, bo curl sam zajmuje się kodowaniem procentowym, więc nie wyślesz uszkodzonego URL.

POST: dane formularza kontra JSON

curl post request przyjmuje dwie typowe postacie. Zakodowane jako formularz (klasyczna treść formularza HTML):

curl -d "name=alice&role=admin" https://httpbin.org/post

-d ustawia Content-Type: application/x-www-form-urlencoded i przełącza metodę na POST za Ciebie. Do API w JSON wyślij zamiast tego JSON:

curl -d '{"name":"alice","role":"admin"}' \
  -H "Content-Type: application/json" \
  https://httpbin.org/post

Jest na to czystszy sposób, omówiony w następnej sekcji.

PUT i PATCH

PUT zastępuje zasób; PATCH aktualizuje jego część. PUT jest idempotentny — wysłany dwa razy pozostawia ten sam stan.

# Zastąp cały zasób
curl -X PUT -d '{"name":"alice","role":"owner"}' \
  -H "Content-Type: application/json" \
  https://api.example.com/users/7

# Zaktualizuj jedno pole
curl -X PATCH -d '{"role":"owner"}' \
  -H "Content-Type: application/json" \
  https://api.example.com/users/7

DELETE

DELETE zazwyczaj nie niesie żadnej treści, więc wystarczy -X:

curl -X DELETE https://api.example.com/users/7

Wysyłanie nagłówków i treści JSON

Większość prawdziwej pracy z API to nagłówki i JSON. Dwie flagi dźwigają tu ciężar: -H i --json.

Własne nagłówki curl z -H

-H dodaje jeden nagłówek i można ją powtórzyć dowolną liczbę razy. Tak ustawiasz Accept, Authorization, własne nagłówki X- oraz identyfikatory żądań:

curl https://httpbin.org/headers \
  -H "Accept: application/json" \
  -H "X-Request-Id: 9f3c1a" \
  -H "User-Agent: my-cli/1.0"

Aby usunąć domyślny nagłówek, który curl wysłałby normalnie, podaj mu pustą wartość (-H "User-Agent:"). Aby wysłać nagłówek bez wartości, użyj średnika (-H "X-Empty;").

POST JSON: -d kontra nowoczesna flaga --json

Od curl 7.82 --json to idiomatyczny sposób na wysłanie żądania JSON curl post request. Robi trzy rzeczy naraz: ustawia Content-Type: application/json, ustawia Accept: application/json i wysyła treść dosłownie.

# Rozwlekły, stary sposób — trzy elementy do utrzymania w zgodzie
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"name":"alice"}' \
  https://httpbin.org/post

# Nowoczesny odpowiednik
curl --json '{"name":"alice"}' https://httpbin.org/post

--json można powtarzać i wówczas łączy treści, a --json @file.json wczytuje treść z pliku. Stosuj ją do każdego API w JSON.

Content-Type i Accept

Te dwa nagłówki są źródłem błędów 415 i 406. Content-Type opisuje treść, którą wysyłasz; Accept mówi, co chcesz otrzymać z powrotem. Wyślij JSON do punktu końcowego, który przyjmuje tylko dane formularza, a dostaniesz 415 Unsupported Media Type. Poproś o XML z API obsługującego wyłącznie JSON, a możesz dostać 406 Not Acceptable. (Te kody rozłożono na czynniki w przewodniku po kodach statusu HTTP).

Gdy odpowiedź wraca jako ściana zminifikowanego JSON, sformatuj ją w narzędziu Formatowanie JSON albo przepuść prosto przez jq, by wyciągnąć jedno pole:

curl -s https://httpbin.org/json | jq '.slideshow.title'

Pełen zestaw filtrów jq — wybieranie, mapowanie i przekształcanie odpowiedzi API — znajdziesz w jq Cheat Sheet.

Uwierzytelnianie w curl

Cztery style uwierzytelniania pokrywają niemal każde API: basic auth, tokeny Bearer, klucze API i cookies.

Basic auth (-u user:pass)

-u wysyła nagłówek HTTP Authorization: Basic z Twoimi danymi logowania zakodowanymi w Base64:

curl -u alice:s3cret https://httpbin.org/basic-auth/alice/s3cret

Pomiń hasło (-u alice), a curl zapyta o nie, trzymając je poza historią powłoki.

Tokeny Bearer i OAuth

Większość nowoczesnych API używa curl bearer token: tokenu dostępu OAuth 2.0 lub tokenu API w nagłówku Authorization. curl ma skrót, --oauth2-bearer, równoważny ręcznemu zapisaniu nagłówka:

# Jawny nagłówek
curl -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.abc" \
  https://api.example.com/me

# Skrót
curl --oauth2-bearer "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.abc" \
  https://api.example.com/me

Jeśli backend odrzuca token, zdekoduj go w narzędziu Dekoder JWT, by sprawdzić oświadczenia exp (wygaśnięcie), aud (odbiorca) i iss (wystawca), zanim obwinisz curl — wygasły lub kierowany do złego odbiorcy token to zwykle przyczyna.

Klucze API (nagłówek kontra parametr zapytania)

Niektóre API chcą klucza w nagłówku, inne w parametrze zapytania. Nagłówki są bezpieczniejsze, bo adresy URL wyciekają do logów i historii przeglądarki:

# Zalecane: klucz w nagłówku
curl -H "X-API-Key: sk_live_a1b2c3" https://api.example.com/data

# Mniej bezpieczne: klucz w URL (trafia do logów dostępu)
curl "https://api.example.com/data?api_key=sk_live_a1b2c3"

Cookies (-b do wysyłania, -c do zapisu)

-c zapisuje plik cookies; -b odczytuje go z powrotem. Tak przenosisz sesję między żądaniami:

# Zaloguj się i zapisz cookie sesji
curl -c jar.txt -d "user=alice&pass=s3cret" https://httpbin.org/cookies/set/session/abc123

# Użyj go ponownie przy następnym wywołaniu
curl -b jar.txt https://httpbin.org/cookies

Uwaga dotycząca bezpieczeństwa: tokeny i dane logowania mają miejsce wyłącznie na połączeniach HTTPS — TLS szyfruje nagłówki, zwykły HTTP nie. Unikaj umieszczania sekretów bezpośrednio w wierszu poleceń, gdzie lądują w historii powłoki i w wyniku ps. Odczytaj nagłówek z pliku przez -H @authfile albo pobierz wartość ze zmiennej środowiskowej (-H "Authorization: Bearer $TOKEN").

Pobieranie i wysyłanie plików

curl nazwano „client URL”, bo przenoszenie plików to jego pierwotne zadanie. Pobieranie i wysyłanie mają po kilka wartych poznania flag.

Pobieranie: -O kontra -o kontra -C -

-O (wielkie O) zapisuje plik pod jego zdalną nazwą. -o (małe) pozwala wybrać nazwę. -C - wznawia częściowe pobieranie od miejsca, w którym się zatrzymało:

# Zapisz pod zdalną nazwą pliku: archive.zip
curl -O https://example.com/downloads/archive.zip

# Zapisz pod wybraną przez siebie nazwą
curl -o backup.zip https://example.com/downloads/archive.zip

# Wznów przerwane pobieranie
curl -C - -O https://example.com/downloads/archive.zip

# Podążaj za przekierowaniami do prawdziwego pliku (typowe przy CDN)
curl -OL https://example.com/latest/archive.zip

Aby pobrać (curl download file) zawartość ukrytą za przekierowaniem, dodaj -L — strony z wydaniami i linki CDN niemal zawsze przekierowują.

Wysyłanie: -T kontra -F

-T wysyła plik metodą PUT, przekazując surowe bajty jako treść (typowe dla magazynów obiektów i punktów końcowych REST do plików). -F wysyła żądanie multipart/form-data, ten sam format, którego używa przeglądarka przy polach plikowych:

# PUT surowych bajtów
curl -T report.pdf https://api.example.com/files/report.pdf

# Wysyłanie multipart/form-data (zwróć uwagę na przedrostek @)
curl -F "file=@report.pdf" -F "title=Q2 report" https://httpbin.org/post

Przedrostek @ mówi curl, by odczytał zawartość pliku. Bez niego -F "file=report.pdf" wysyła dosłowny ciąg report.pdf, a nie plik.

--data-urlencode i kodowanie procentowe

Gdy wartość zawiera spacje, &, = lub znaki spoza ASCII, -d wysyła ją bez zmian i psuje żądanie. --data-urlencode koduje ją poprawnie:

# Źle: & dzieli treść, a spacja jest niepoprawna
curl -d "q=hello world&filter=a&b" https://httpbin.org/post

# Dobrze: każde pole jest kodowane procentowo
curl --data-urlencode "q=hello world" \
  --data-urlencode "filter=a&b" \
  https://httpbin.org/post

Jeśli chcesz zrozumieć, co oznaczają te sekwencje %20 i %26 — albo zdebugować podwójnie zakodowaną wartość — wklej ją do narzędzia Koder i dekoder URL lub przeczytaj omówienie na poziomie bajtów w przewodniku po kodowaniu i dekodowaniu URL.

Testowanie API i analiza odpowiedzi

curl sprawdza się w skryptach i CI, bo -w ujawnia wszystko o transferze, a kody wyjścia pozwalają wykrywać awarie.

Tylko kod statusu

Aby pobrać sam status HTTP, odrzuć treść za pomocą -o /dev/null i wypisz kod przez -w:

curl -s -o /dev/null -w "%{http_code}\n" https://httpbin.org/status/204
# → 204

To rdzeń każdego sprawdzenia kondycji curl api testing. Aby zinterpretować otrzymaną liczbę, Kody statusu HTTP ściąga omawia każdy zakres.

Rozbicie czasów

-w ujawnia zmienne czasowe, więc widzisz, gdzie ucieka czas — DNS, połączenie TCP, TLS czy sam serwer:

curl -s -o /dev/null \
  -w "dns=%{time_namelookup}s connect=%{time_connect}s tls=%{time_appconnect}s total=%{time_total}s\n" \
  https://example.com
# → dns=0.004s connect=0.021s tls=0.058s total=0.142s

Wysoki time_appconnect wskazuje na TLS, wysoki time_starttransfer wskazuje na wolny backend.

Cicho, ale pokazuj błędy

-s ukrywa wskaźnik postępu, ale ukrywa też komunikaty o błędach — pułapka w skryptach. Połącz ją z -S, by curl pozostał cichy przy powodzeniu, a mimo to zgłaszał awarie:

curl -sS https://api.example.com/health

curl w CI / skryptach: niepowodzenie przy błędach HTTP

Domyślnie curl kończy z kodem 0 nawet przy 404 czy 500, bo sam transfer się powiódł. W sprawdzaniu kondycji to przeciwieństwo tego, czego chcesz. -f (fail) sprawia, że curl kończy z kodem niezerowym przy błędach HTTP, więc Twój potok je wychwyci:

# Przerywa budowanie, jeśli punkt końcowy zwraca 4xx/5xx
curl -fsS https://api.example.com/health || exit 1

-fsS (fail, silent, show-errors) to kanoniczne połączenie do sprawdzania kondycji. Dla bogatszej diagnostyki --fail-with-body (curl 7.76+) wciąż wypisuje treść błędu przed zakończeniem.

Limity czasu i ponawianie

Health check, który wisi w nieskończoność, jest gorszy niż taki, który szybko zawodzi. Każde żądanie w skrypcie warto ograniczyć opcjami --max-time (limit dla całego transferu) i --connect-timeout (limit tylko na nawiązanie połączenia):

# Rezygnacja po 5 s łączenia, 10 s łącznie
curl --connect-timeout 5 --max-time 10 -fsS https://api.example.com/health

W niestabilnej sieci --retry ponawia nieudany transfer z wykładniczym wycofaniem. Domyślnie ponawia tylko błędy przejściowe (przekroczenia czasu, 5xx); dodanie --retry-all-errors ponawia także odrzucone połączenia:

# Do 3 prób, z rosnącą przerwą między nimi
curl --retry 3 --retry-all-errors --max-time 30 -fsS https://api.example.com/health

Gdy skrypt pobiera duży plik, a nie chcesz wysycić łącza, --limit-rate ogranicza przepustowość — --limit-rate 2M utrzymuje ją na 2 MB/s.

HTTP/1.1, HTTP/2 i HTTP/3 w curl

curl negocjuje wersję HTTP po TLS za pomocą ALPN. Możesz wymusić wersję, gdy trzeba przetestować konkretną ścieżkę protokołu.

--http2 i --http3

# Żądaj HTTP/2 (cofa się do 1.1, jeśli niedostępne)
curl --http2 https://example.com

# Żądaj HTTP/3 po QUIC
curl --http3 https://example.com

HTTP/3 działa po QUIC i wymaga TLS 1.3. Zadziała tylko wtedy, gdy Twój curl zbudowano z backendem obsługującym HTTP/3 oraz serwer ogłasza to nagłówkiem Alt-Svc. Uruchom curl --version, by potwierdzić, że HTTP3 widnieje w wierszu funkcji; jeśli nie, --http3 zgłosi błąd.

Szczegółowe informacje o TLS / ALPN

-v pokazuje wynegocjowany protokół i uzgadnianie TLS — tak potwierdzasz, że wersja faktycznie weszła w życie:

curl -v --http2 https://example.com 2>&1 | grep -i "ALPN\|HTTP/2"
# → * ALPN: server accepted h2
# → > GET / HTTP/2

Szukaj ALPN: server accepted h2 (HTTP/2) lub h3 (HTTP/3) w wyniku uzgadniania.

8 typowych pułapek curl (i jak je naprawić)

Te osiem prędzej czy później podkłada nogę każdemu.

  1. Pojedyncze kontra podwójne cudzysłowy. Podwójne cudzysłowy pozwalają powłoce rozwinąć $VARS; pojedyncze przekazują wszystko dosłownie. Używaj pojedynczych cudzysłowów do treści JSON, by $ i ! nie były interpretowane: curl --json '{"price":"$5"}'. Używaj podwójnych cudzysłowów, gdy chcesz rozwinięcia: -H "Authorization: Bearer $TOKEN".

  2. -d nie koduje w URL. Spacja lub & w wartości -d uszkadza treść. Przejdź na --data-urlencode dla każdej wartości, która nie jest już zakodowana.

  3. Zbędne -X POST z -d. -d już implikuje POST. Pisanie -X POST -d ... jest nieszkodliwe, ale zbędne; gorzej, -X GET -d ... wysyła treść z metodą GET, co zaskakuje niektóre serwery. Pozwól, by flaga treści ustawiała metodę.

  4. Zapominanie o @ przy odczycie z pliku. -d @body.json wczytuje plik; -d body.json wysyła dosłowny tekst body.json. Ta sama pułapka z -F "file=@upload.png" kontra -F "file=upload.png".

  5. Sięganie po -k przy błędach certyfikatu. -k wyłącza weryfikację TLS i ukrywa prawdziwe problemy (wygasłe certyfikaty, zły nazwa hosta, brakujący pośredni). Napraw przyczynę źródłową: zainstaluj CA przez --cacert ca.pem albo zaktualizuj systemowy magazyn zaufania. Zachowaj -k dla samopodpisanego serwera deweloperskiego, który w pełni kontrolujesz.

  6. -s połykające błędy. Tryb cichy ukrywa awarie w skryptach. Zawsze używaj -sS, by błędy nadal wychodziły na wierzch.

  7. [ ] { } w adresach URL podlegające globbingowi. curl traktuje [1-5] i {a,b} jako zakresy/listy URL. Adres URL z dosłownymi nawiasami (typowy w parametrach tablicowych w zapytaniu, jak arr[]=1) zostaje przekształcony. Wyłącz globbing przez -g: curl -g "https://api.example.com/items?id[]=1&id[]=2".

  8. Wielkość liter w nagłówkach i duplikaty. Nazwy nagłówków HTTP są niewrażliwe na wielkość liter, ale wysłanie tego samego nagłówka dwa razy zwykle wysyła oba — niektóre serwery biorą pierwszy, niektóre ostatni, niektóre odrzucają. Jeśli nadpisujesz domyślny, jak User-Agent, ustaw go raz przez -H, zamiast polegać na kolejności.

curl kontra wget kontra HTTPie — co wybrać

Wszystkie trzy pobierają po HTTP, ale optymalizują pod różne zadania. Oto decyzja curl vs wget (plus HTTPie) w pigułce:

ZadaniecurlwgetHTTPie
Szybkie wywołanie API / debugowanieDoskonaleOgraniczoneDoskonale
Treści JSONDobrze (--json)NiewygodnieDoskonale (natywnie)
Rekurencyjne pobieranie / kopiowanie witrynyNieDoskonale (-r)Nie
Wznawianie + ponawianie dużych pobrańDobrze (-C -)Doskonale (wbudowane)Nie
Skrypty / CI (kody wyjścia, -w)DoskonaleDobrzeDobrze
Ładny, kolorowany wynik domyślnieNieNieDoskonale
Wstępnie zainstalowane niemal wszędzieTakCzęstoRzadko

W skrócie: po curl sięgaj do debugowania API i skryptów (jest wszędzie, a -w nie ma sobie równych), po HTTPie, gdy chcesz czytelnej ergonomii JSON na własnej maszynie, a po wget do kopiowania witryn lub wsadowego pobierania plików z automatycznymi ponowieniami.

Najczęściej zadawane pytania

Do czego służy curl?

curl to narzędzie wiersza poleceń do przesyłania danych do i z serwera po HTTP, HTTPS, FTP i wielu innych protokołach. Programiści używają go do wywoływania i debugowania API, pobierania i wysyłania plików oraz uruchamiania sprawdzeń kondycji w skryptach i potokach CI.

Jak wysłać żądanie POST za pomocą curl?

Użyj -d dla danych formularza lub --json dla JSON: curl --json '{"name":"alice"}' https://httpbin.org/post. Obie flagi automatycznie ustawiają metodę na POST, więc nie potrzebujesz -X POST.

Jak dodać nagłówek w curl?

Użyj -H "Name: value" i powtórz dla wielu nagłówków: curl -H "Accept: application/json" -H "X-Request-Id: 9f3c1a" https://httpbin.org/headers. Nie ma limitu, ile razy możesz przekazać -H.

Jak wysłać token Bearer za pomocą curl?

Przekaż nagłówek Authorization: curl -H "Authorization: Bearer YOUR_TOKEN" https://api.example.com/me, albo użyj skrótu --oauth2-bearer YOUR_TOKEN. Wysyłaj tokeny wyłącznie po HTTPS i dekoduj je w narzędziu Dekoder JWT podczas debugowania.

Jak pobrać plik za pomocą curl?

Użyj -O, by zachować zdalną nazwę pliku, albo -o name, by wybrać własną: curl -O https://example.com/archive.zip. Dodaj -L, by podążać za przekierowaniami, i -C -, by wznowić przerwane pobieranie.

Jak zobaczyć tylko kod statusu HTTP za pomocą curl?

Odrzuć treść i wypisz kod: curl -s -o /dev/null -w "%{http_code}" https://example.com. To standardowy wzorzec sprawdzeń kondycji w skryptach.

Jaka jest różnica między curl a wget?

curl przesyła pojedynczy zasób i domyślnie pisze na stdout, co czyni go idealnym do wywołań API i skryptów. wget specjalizuje się w pobieraniu, w tym rekurencyjnym kopiowaniu i automatycznych ponowieniach. Do testowania API używaj curl; do wsadowego pobierania plików używaj wget.

Czy curl jest dostępny w systemie Windows?

Tak. curl jest dostarczany z Windows 10 (build 1803+) i Windows 11, dostępny jako curl w Wierszu poleceń i PowerShell. Pamiętaj, że PowerShell historycznie tworzył alias curl do Invoke-WebRequest, więc wywołuj jawnie curl.exe, jeśli flagi zachowują się nieoczekiwanie.

Podsumowanie

curl nagradza odrobinę zapamiętywania: tabela flag na górze pokrywa zdecydowaną większość tego, co wpiszesz, a reszta to wiedza, które flagi implikują metodę, które wymagają cudzysłowów, a które okłamują Cię w skryptach (patrzymy na Ciebie, gołe -s). Trzymaj tę ściągawkę curl otwartą obok terminala. Jeśli wolisz składać polecenia interaktywnie, wypróbuj nasz kreator poleceń cURL i generuj je wizualnie.

Naturalne kolejne kroki w przepływie pracy z API są o jedno kliknięcie. Wyślij żądanie z curl, odczytaj, co wróciło, z Kody statusu HTTP ściąga, a potem sformatuj JSON w narzędziu Formatowanie JSON albo pokrój go za pomocą jq Cheat Sheet. Pełną listę opcji wyczerpująco opisuje podręcznik curl, a dokumentacja HTTP od MDN wyjaśnia semantykę każdej metody i nagłówka.

Tagi: curl http rest-api command-line developer-reference

Powiązane artykuły

Zobacz wszystkie artykuły