Невозможно указать, какой тип ответа принимается при вызове api Джерси


У меня есть api Джерси, который ранее был настроен для ответа с помощью XML (JAXB marshalling, @Products ("application / xml")). Теперь я хочу добавить возможность запрашивать ответы в формате JSON, используя совместимость JAXB/JSON.

Я изменил аргумент на мой @ производит аннотацию, чтобы быть {"application/json", "application/xml"}, который устанавливает JSON в качестве типа ответа по умолчанию. Затем я делаю следующие вызовы, чтобы получить пользователя по электронной почте с помощью cUrl:

curl -k https://api.mywebservice.com/service/user/email/foo@bar.com

Возвращает ответ JSON в виде ожидаемый.

curl -k -H "accepts: application/xml" -H "content-type: application/xml" https://api.mywebservice.com/service/user/email/foo@bar.com

Также выдает ответ JSON.

Конечно, первое, что я сделал, это переключил аннотацию на @Produces{"application/xml", "application/json"}, а затем больше не мог получить ответ JSON, даже если я указал его в заголовке.

Любые мысли или предложения будут высоко оценены. Спасибо.

1 2

1 ответ:

Заголовок называется Accept, поэтому вам нужно вызвать:

curl -k -H "accept: application/xml" https://api.mywebservice.com/service/user/email/foo@bar.com

Также Заголовок Content-Type предназначен для указания типа носителя данных, отправляемых на сервер в запросе POST или PUT, поэтому его следует просто оставить для запросов GET.