Может ли AWS API Gateway поддерживать `application / x- www-form-urlencoded` с параметрами body и URL (строка запроса)? - PullRequest
1 голос
/ 24 марта 2020

Многочисленные сервисы могут принимать параметры строки запроса в 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

Сообщение об ошибке кажется довольно определенным, но я хотел спросить:

  1. Есть ли обходной путь для настройки шлюза API для поддержки обоих?
  2. Существует ли стандартная причина, по которой AWS wou Я не поддерживаю это или это просто решение / ограничение проекта?

Если решения для этого нет, есть ли хорошее облегченное решение, кроме развертывания серверного решения, такого как Heroku. Кроме того, поддерживают ли другие облачные сервисы это с помощью своих API-шлюзов + облачных функций, таких как Google?

Некоторые примеры, показывающие поддержку обоих:

1 Ответ

0 голосов
/ 24 марта 2020

Да, существует обходной путь, и ключевой вопрос заключается в том, чтобы установить шаблон сопоставления, который преобразует строку в json. Очень подробный пример показан в API Gateway любого типа контента .

...