Вопрос не указывает, какой тип бэкенда используется. Документация AWS для AWS API Gateway ориентирована на лямбда-функции - я не смог найти никакой помощи, чтобы получить идентификатор соединения для моего http-сервера.
Пытаясь ответить на вопрос Big Endian, я обнаружил некоторые проблемы - мой бэкэнд CakePHP не будет декодировать цитируемое тело json. Я нашел решение, но было много других шагов, необходимых для реализации его ответа, поэтому вот они:
Я создал ключ маршрута с отключенным HTTP-прокси и настроил шаблон запроса следующим образом (также очень скудная документация):
- Выражение выбора маршрута: $ request.body.action
Ключ маршрута: подписаться
Это означает, что все запросы с {"action": "subscribe"} будут перенаправляться сюда
Тип запроса на интеграцию: HTTP
- Интеграция прокси-сервера HTTP: выключено - для заголовка или авторизации через
- HTTP-метод: POST
А затем по самой сложной части: настройка шаблона запроса. Я хотел, чтобы все запросы «подписки» использовали этот шаблон, и единственный способ, который я нашел, это установить для выражения выбора шаблона то же самое, что и для выражения выбора маршрута: $ request.body.action, и установить ключ шаблона на «подписку». ».
В конечном итоге это двойной тест для того же контента, который API должен сделать, чтобы применить этот шаблон - и если у кого-то есть лучший способ сделать это, пожалуйста, прокомментируйте.
И, наконец, последний шаг - ввести это как «Создать шаблон» для «подписки»:
{"connectionId": "$context.connectionId", "body": $input.body}
Обратите внимание, что в моем случае мое тело было json, а $ input.body не в кавычках - тело json расширяется шаблоном. Я полагаю, если тело это просто строка, то шаблон будет
{"connectionId": "$context.connectionId", "body": "$input.body"}
но тогда маршрутизация никогда не попадет сюда, так как для маршрутизации необходимо, чтобы тело содержало ключ действия в json.