小编E. *_*dei的帖子

API Gateway POST 方法在测试期间有效,但不适用于邮递员

我会尽量清楚地解释我的问题。

我有一个 API,他用 Node.js 编写的 lambda 函数在 DynamoDB 中编写一些东西。当我在 AWS 控制台中调用它时,API 按预期工作。我发送一个这样的身体:

{
        "user-id":"4dz545zd",
        "name":"Bush",
        "firstname":"Gerard",
}
Run Code Online (Sandbox Code Playgroud)

这会在我的 dynamoDB 表中创建条目。但是当我使用 Postman 调用相同的 API(新部署的)时,我收到此错误:

{
    "statusCode": "400",
    "body": "One or more parameter values were invalid: An AttributeValue may not contain an empty string",
    "headers": {
        "Content-Type": "application/json"
    }
}
Run Code Online (Sandbox Code Playgroud)

当我检查 cloudwatch 失败的原因时,我看到:转换前的方法请求正文:[二进制数据]

这很奇怪,因为我发送了带有两个标头的 JSON:

Content-Type:application/json
Accept:application/json
Run Code Online (Sandbox Code Playgroud)

然后在 cloudwatch 中,我看到正在处理的是:

{
        "user-id":"",
        "name":"",
        "firstname":"",
}
Run Code Online (Sandbox Code Playgroud)

这解释了错误,但我不明白为什么当我用邮递员发送它时,它不是空的,使用 json 格式,它仍然将它作为“二进制”数据发送,所以我的映射规则没有处理它(所以 lambda 用一个空的 json 处理它):

#set($inputRoot = $input.path('$'))
  {
  "httpMethod": "POST",
  "body": {
    "TableName": "user", …
Run Code Online (Sandbox Code Playgroud)

api aws-lambda aws-api-gateway

6
推荐指数
1
解决办法
5401
查看次数

标签 统计

api ×1

aws-api-gateway ×1

aws-lambda ×1