Testowanie REST API za pomocą cURL

Zwykłe strony testujemy w przeglądarce. API RESTowe jest trudniejsze. Przeglądarka nie pozwala nam na większość metod HTTP, ustawianie dowolnych nagłówków itp.  Z pomocą przychodzi nam biblioteka cURL, gdzie możemy zrobić praktycznie wszystko z wywołaniem HTTP.

Pomijam instalację cURLa. Przejdźmy od razu do rzeczy.

Proste zapytanie GET i nagłówki HTTP

W najprostszej formie cURL wysyła zapytanie GET. W odpowiedzi otrzymujemy treść strony:

$ curl http://www.wp.pl/
<!DOCTYPE html>
<html lang="pl">
    <head>
...

Aby cURL wyświetlił nam bardziej szczegółowe nagłówki odpowiedzi, korzystamy z opcji -i:

$ curl -i http://www.wp.pl/
HTTP/1.1 200 OK
Server: aris
Expires: ...

Gdy nie chcemy treści, a jedynie nagłówki dodajemy opcję -I (duże i):

$ curl -i -I http://www.wp.pl/
HTTP/1.1 200 OK
Server: aris
...

H jak header czyli nagłówki żądania

Opcja -H pozwala podawać dowolne nagłówki żądania. Możemy np. podawać się za archaiczną przeglądarkę Netscape:

$ curl -iI http://www.wp.pl/ -H "User-agent: Mozilla/4.08 (Macintosh; I; PPC, Nav)"
HTTP/1.1 200 OK
Server: aris
Expires: ...

Możemy podawać wiele nagłówków gdy kilka razy wywołamy opcję -H:

$ curl -iI http://www.wp.pl/ 
-H "User-agent: Mozilla/4.08 (Macintosh; I; PPC, Nav)" 
-H "Accept: text/html,application/xhtml+xml" 
-H "Accept-Encoding: gzip, deflate"

X jak… metody wywołania

Oprócz nieśmiertelnego GETa protokół oferuje nam całą gamę ciekawszych komend. POST, PUT, HEAD, OPTIONS, DELETE, PATCH, LINK, UNLINK, TRACE, CONNECT – jest tego sporo. Do wywołania służy opcja -X jak eXecute:

$ curl -iI -X OPTIONS http://moj.serwis.rest/zasob/nazwa
200 OK
Allow: GET,PUT,DELETE,OPTIONS

Jak widzimy komenda OPTIONS daje nam informacje o zasobie. Możemy teraz pobrać zasób (GET), zmienić zawartość (PUT) oraz skasować (DELETE). Tak samo wywołujemy pozostałe metody.

Dane czyli opcja -d

Czym byłby POST bez wysłania danych? Skoro wiemy jak go wywołać, pozostaje nam wysłać dane. Dotychczas dane (np. z formularza) wysyłała przeglądarka. Teraz robimy to opcją -d:

$ curl -iI -X POST 
  -d "imie=Adam&nazwisko=Z" 
  http://moj.serwis.rest/

W ten sam sposób możemy wysyłać dane dla PUT np. w formacie JSON (uwaga na cudzysłowy!):

$ curl -iI -X PUT 
 -d '{"imie":"Adam", "nazwisko":"Z"}' 
 http://moj.serwis.rest/

Na koniec

Curl ma o wiele większe możliwości. Autoryzacja, zapamiętywanie nagłówków, ciasteczka, obsługa innych protokołów. Najprościej wpisać „curl –help” – liczba opcji jest imponująca.

Warto też poznać nagłówki http – im więcej ich znamy tym lepiej będziemy w stanie komunikować się z serwisami RESTowymi.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *