Шлюз API AWS возвращает HTTP 406

Я настроил свой GET API через AWS API Gateway. На конечной точке запущена служба REST Jersey 2.x.

Клиент не может вставить заголовок «Accept», и шлюз API считает целесообразным вставить свой собственный заголовок «Accept»: «application/json».

Это приводит к тому, что сервер не может выполнить запрос с кодом HTTP 406, поскольку API на стороне сервера имеет нотацию @Produces(MediaType.APPLICATION_OCTET_STREAM).

Кто-нибудь знает, как я могу остановить шлюз API, не прибегая к Lambda?


person Earthling    schedule 08.02.2017    source источник


Ответы (1)


Вы можете переопределить это, добавив заголовок в запрос на интеграцию. Вы добавляете имя заголовка Accept, а затем устанавливаете значение пустых одинарных кавычек ''. Это должно отправить пустой заголовок Accept на конечную точку.

Или вы можете установить другое значение, если необходимо, просто используйте одинарные кавычки, как указано выше 'application/octet-stream'

person jackko    schedule 15.02.2017
comment
Я пробовал это раньше, но из-за ошибки в APIG возвращаемое значение «Content-Type» возвращалось из APIG как «*/*». После создания тикета в техподдержке теперь все хорошо. :) - person Earthling; 16.02.2017
comment
Хотите обновить решение от службы поддержки? Спасибо! - person jackko; 17.02.2017
comment
Что ж, служба поддержки в основном сказала, что то, что я пробовал, похоже на предложенный вами ответ, было правильным, и они развернули новый код в APIG для устранения ошибки. - person Earthling; 17.02.2017