REST API-используйте HTTP-заголовок " Accept: application/json

когда я делаю запрос, я получаю ответ в XML, но мне нужен JSON. В doc указано, чтобы получить JSON взамен: используйте Accept: application/json заголовок HTTP.

где я могу найти заголовок HTTP для размещения Accept: application/json внутри?

Я предполагаю, что это не должно быть внутри URL-запроса, который выглядит так:

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 ответов


вы угадали, заголовки HTTP не являются частью URL-адреса.

и при вводе URL-адреса в браузере запрос будет выдан со стандартными заголовками. В любом случае REST API не предназначены для использования при вводе конечной точки в адресной строке браузера.

наиболее распространенным сценарием является то, что ваш сервер использует сторонний REST Api.

для этого ваш серверный код Форж правильный запрос GET (/PUT / POST / DELETE), указывающий на заданная настройка конечной точки (URL) (при необходимости, как и в вашем случае) некоторые заголовки и, наконец, (возможно) отправка некоторых данных (как обычно происходит в запросе POST, например).

код, чтобы подделать запрос, отправить его и, наконец, получить ответ обратно, зависит от вашего языка на стороне сервера.

если вы хотите тест Api REST вы можете использовать curl инструмент из командной строки.

curl делает запрос и выводит ответ на stdout (если не указано иное).

в вашем случае тестовый запрос будет выдан следующим образом:

$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'

на H или --header директива устанавливает заголовок и его значение.


Well Curl может быть лучшим вариантом для представления json, но в этом случае было бы трудно понять структуру json, потому что ее в командной строке. если вы хотите получить свой json в браузере, вы просто удалите все XML-аннотаций, как -

@XmlRootElement(name="person")
@XmlAccessorType(XmlAccessType.NONE)
@XmlAttribute
@XmlElement

из вашего класса модели и чем запустить тот же url, который вы использовали для представления xml.

убедитесь, что у вас есть зависимость jacson-databind в вашем pom.в XML

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.4.1</version>
</dependency>