Polecenie curl w akcji

Wstęp

curl (Client for URLs") -  jest to program uruchamiany w wierszu poleceń (Windows Git Bash lub Unix/Linux) służący do interakcji z serwerami w celu pobrania lub wysłania danych.

Wspiera takie protokoły jak: HTTP,  HTTPS,  FTP,  FTPS,  SCP,  SFTP,  SMB,  LDAP,  TFTP,  RTMP,  MQTT,  IMAP,  POP3,  GOPHER,  DICT,  FILE,  LDAP,  LDAPS,  RTSP,  Telnet.

Przykłady

Przykłady możesz przetestować korzystając z dowolnego, ogólnodostępnego API. W internecie znajdziesz wiele serwisów takich jak serwis udostępniający informacje o krajach.

GET

Domyślną wartością podczas wywołania curl jest wywołanie HTTP GET (operacja odczytu danych), więc opcjonalnym, równoważnym parametrem jest "-X GET":

curl  -X GET https://restcountries.com/v3.1/capital/tallinn

Serwis powyżej zwraca informacje na podstawie stolicy danego kraju. Jeśli informacje zwrócone przez serwer są w formacie JSON można je dodatkowo sformatować dla poprawy czytelności za pomocą polecenia jq (o ile jest dostępne).


POST

Aby wysłać dane na serwer w celu utworzenia nowego wpisu można wykonać polecenie POST:

curl -X POST -d "param1=value1&param2=value2" http://example.com/resource

Jeśli dane są w postaci JSON warto pamiętać o dodaniu nagłówka HTTP Content-Type za pomocą flagi -H:

curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1","key2":"value2"}' http://example.com/resource

Jeśli dane znajdują się w pliku data.json można je dołączyć następująco:

curl -X POST -H "Content-Type: application/json" -d @data.json http://example.com/resource

Plik data.json powinien wyglądać analogiczne do poniższego:

{
"key1": "value1",
"key2": "value2"
}

DELETE

W celu usunięcia danych należy wykonać operację DELETE:

curl -X DELETE http://example.com/resource/123

PUT

W celu aktualizacji istniejących danych należy wykonać operację PUT:

curl -X PUT -d "param1=newValue1&param2=newValue2" http://example.com/resource/123

Jeśli dane do zaktualizowania znajdują się w zewnętrznym pliku należy postępować analogiczne jak w poleceniu POST.

CERTYFIKAT

Jeśli podczas próby nawiązania połączenia z serwerem otrzymujesz błędy weryfikacji certyfikatu serwerowego możesz zignorować je za pomocą flagi -k (zobacz "pozostałe flagi") lub dodać własny magazyn certyfikatów CA (truststore) aby klient (czyli program curl) mógł zweryfikować certyfikat serwerowy. Analogicznie możemy dodać certyfikat kliencki, jeśli serwer wymaga, aby podczas połączenia klient uwierzytelniał się certyfikatem:

curl --cert-type P12 --cert client.pfx:password --cacert /path/to/truststore.pem https://example.com/resource

W powyższym przykładzie zastosowano certyfikat kliencki w standardzie PKCS#12, jednak polecenie "curl" wspiera również inne.

FTP

W celu wysłania pliku localfile.txt na serwer FTP należy wykonać polecenie:

curl -T localfile.txt ftp://ftp.example.com/upload/

POZOSTAŁE FLAGI

Zapis wyniku żądania do pliku:

curl -o output.txt http://example.com/file.txt

Autoryzacja HTTP z użyciem loginu i hasła:

curl -u username:password http://example.com/resource

Dodanie pliku cookies.txt do żądania HTTP:

curl -b cookies.txt http://example.com

Ignorowanie błędów certyfikatów SSL/TLS (nie zalecane w środowisku produkcyjnym):

curl -k https://example.com

Wysyłanie pliku na serwer w ramach żądania PUT:

curl --upload-file localfile.txt http://example.com/upload

Podsumowanie

Polecenie "curl" jest powszechnie stosowane ze względu na prostotę. Umożliwia automatyzację powtarzalnych czynności poprzez zastosowanie w skryptach. W celu uzyskania wszystkich dostępnych opcji można wykonać polecenie:

curl -h

Bardziej szczegółową listę można uzyskać wykonując:

curl --help all

Warto pamiętać, że w starszych wersjach programu "curl" niektóre z opcji nie będą dostępne. W takim przypadku warto sprawdzić aktualnie dostępną wersję:

curl --version

i porównać do informacji zawartych na stronie: https://curl.se/docs/releases.html

Powodzenia!

#buymeacoffee