Многочисленные сервисы могут принимать параметры строки запроса в URL, когда POST
запрос сделан с Content-Type: application/x-www-form-urlencoded
и другими параметрами в теле, но кажется, что AWS API-шлюз не может.
Когда я При вызове AWS API-шлюза с POST
шаблоном сопоставления для application/x-www-form-urlencoded
и параметров URL строки запроса (с функцией Lambda) я получаю следующую ошибку:
{
"message":"When Content-Type:application/x-www-form-urlencoded, \
URL cannot include query-string parameters (after '?'): \
'/prod/webhook?inputType=wootric&outputType=glip&url=...'"
}
Вот пример cURL :
curl -XPOST 'https://{myid}.execute-api.{myregion}.amazonaws.com/prod/webhook? \
inputType=wootric&outputType=glip&url=https://hooks.glip.com/webhook/ \
11112222-3333-4444-5555-666677778888' \
-d "@docs/handlers/wootric/event-example_response-created.txt" \
-H 'Content-Type: application/x-www-form-urlencoded' -v
Заданная цель c состоит в том, чтобы получить событие Webhook Wootri c, отправленное в функцию Lambda, используя URL-адрес с параметрами строки запроса.
Вы можете получить код здесь:
https://github.com/grokify/chathooks
Файл тела события Wootri c находится здесь:
https://raw.githubusercontent.com/grokify/chathooks/master/docs/handlers/wootric/event-example_response-created.txt
Проблема GitHub находится здесь:
https://github.com/grokify/chathooks/issues/15
Сообщение об ошибке кажется довольно определенным, но я хотел спросить:
- Есть ли обходной путь для настройки шлюза API для поддержки обоих?
- Существует ли стандартная причина, по которой AWS wou Я не поддерживаю это или это просто решение / ограничение проекта?
Если решения для этого нет, есть ли хорошее облегченное решение, кроме развертывания серверного решения, такого как Heroku. Кроме того, поддерживают ли другие облачные сервисы это с помощью своих API-шлюзов + облачных функций, таких как Google?
Некоторые примеры, показывающие поддержку обоих: