2017-04-04 24 views
8

Kiedy składam prośbę, otrzymuję XML. Ale potrzebuję JSON. W dokumencie podano, aby uzyskać JSON w zamian: Użyj nagłówka HTTP Accept: application/json.REST API - Użyj nagłówka HTTP "Accept: application/json"

Ale gdzie w imię bogów znajduję nagłówek HTTP, który umieszcza w środku Accept: application/json.

Domyślam się, że nie jest przypuszczać, aby być wewnątrz URL żądania, która wygląda następująco:

http://localhost:8080/otp/routers/default/plan?fromPlace=52.5895,13.2836&toPlace=52.5461,13.3588&date=2017/04/04&time=12:00:00 
+2

W jaki sposób wysyłasz żądanie? –

+0

Pomoże to zrozumieć: http://stackoverflow.com/documentation/rest/1664/getting-started-with-rest/20145/rest-over-http – sp00m

Odpowiedz

17

Zgadłeś prawo, nagłówki HTTP nie są częścią URL.

Po wpisaniu adresu URL w przeglądarce żądanie zostanie wysłane z użyciem standardowych nagłówków. W każdym razie REST Apis nie powinny być konsumowane przez wpisanie punktu końcowego na pasku adresu przeglądarki.

Najczęstszym scenariuszem jest to, że serwer zużywa zewnętrzny REST Api.

Aby to zrobić kodu po stronie serwera wykuwa właściwa GET (/ PUT/POST/DELETE) żądanie wskazując danego punktu końcowego (URL) ustawienie (w razie potrzeby, jak sprawy) jakieś nagłówki i wreszcie (być może) wysyłając niektóre dane (na przykład, co zwykle występuje w żądaniu POST).

Kod służący do przekucia żądania, wysłania go i otrzymania odpowiedzi zależy od języka po stronie serwera.

Jeśli chcesz przetestować a REST Api możesz użyć narzędzia curl z wiersza poleceń.

curl wysyła żądanie i wypisuje odpowiedź na standardowe wyjście (chyba że podano inaczej).

W twoim przypadku żądania testu będą wydawane tak:

$curl -H "Accept: application/json" 'http://localhost:8080/otp/routers/default/plan?fromPlace=52.5895,13.2836&toPlace=52.5461,13.3588&date=2017/04/04&time=12:00:00' 

Dyrektywa H lub --header ustawia nagłówek i jego wartość.