首页 > 解决方案 > 带有对 Lambda 函数和 JSON 有效负载的 POST 请求的 Kong 服务

问题描述

我刚开始使用 Kong 并在服务上设置一个 Lambda 插件来尝试。我使用的 Lambda 函数有一个简单的方法来解析 JSON 正文:

const getBody = (event: any): IBody => {
  const body = JSON.parse(event.body)
  return new Body(body)
}

因此,尽管我能够调用该函数并从中获得响应,但我得到的只是一条类似于以下内容的错误消息:

{"status":500,"message":"SyntaxError: 位置 0 处 JSON 中的意外标记 u"}

标签: node.jslambdakong

解决方案


这是因为从 cli 调用和从 AWS API Gateway 调用时 Lambda 请求是不同的

基本上event.body仅在从 API 网关调用时可用,而从 cli 调用时,正确的属性名称是event.request_body.

因此,将方法修改为以下方法将允许我同时接收来自 AWS API Gateway 和 cli 的调用:

const getBody = (event: any): IBody => {
  const body = JSON.parse(Object.is(event.request_body, undefined) ? event.body : event.request_body)
  return new Body(body)
}

推荐阅读