У нас есть конечная точка POST в нашем бессерверном API, которая прослушивает обратный вызов активации интеграции Magento 2 и обрабатывает полезную нагрузку. Content-Type этого запроса обратного вызова — application/x-www-form-urlencoded
. Однако, когда мы пытаемся получить обратный вызов, лямбда-функция немедленно завершает выполнение, пропуская все тело функции. В логах Cloudwatch мы видим только это. Даже console.info
не печатаются. (конечная точка только выводит строку на консоль. Никаких асинхронных операций не выполняется. Тем не менее, эта проблема сохраняется)
2020-12-12T12:24:47.012+05:30 START RequestId: 4afba03d-54ef-4b5e-bd44-157b0b7a9f9b Version: $LATEST
2020-12-12T12:24:47.050+05:30 END RequestId: 4afba03d-54ef-4b5e-bd44-157b0b7a9f9b
2020-12-12T12:24:47.050+05:30 REPORT RequestId: 4afba03d-54ef-4b5e-bd44-157b0b7a9f9b Duration: 37.83 ms Billed Duration: 38 ms Memory Size: 128 MB Max Memory Used: 109 MB Init Duration: 893.79 ms
Когда мы пытаемся попасть в ту же конечную точку из POSTMAN с Content-Type: application/json, конечная точка работает, как и ожидалось.
Поэтому мы подумали, что проблема может быть в заголовке Content-Type
, и где-то читали, что добавление шаблона сопоставления запросов решит эту проблему. Поэтому мы даже время от времени добавляли шаблон сопоставления для типа контента application/x-www-form-urlencoded
в запрос на интеграцию лямбда-метода с последующим контентом. Но наша проблема не была решена, к сожалению.
"{ "body": "$util.base64Decode($input.body)" }"
{
"formparams" : $input.json('$')
}
{
"body" : $input.json('$')
}
Мой вопрос: как мы можем настроить конечную точку для печати полезной нагрузки запроса POST, предотвращая ее немедленный выход? Уже неделю ищем решение этой проблемы. Было бы здорово, если бы кто-то мог внести свои полезные и ценные предложения для решения этой проблемы. заранее спасибо
Поскольку Content-Type
обратного вызова активации интеграции Magento 2 — application/x-www-form-urlencoded
, лямбда-событие для этого запроса POST было примерно таким.
console.info(event) -> {body: "a=var&b=other_var&c=another_var"}
Конечная точка даже ничего не напечатала, потому что я поставил console.info(JSON.parse(event. body))
. Это приводит к ошибке синтаксического анализа JSON, и конечная точка немедленно завершает выполнение.
Когда я начал парсить тело события параметра запроса вместо JSON.parse()
, проблема была решена.