我会尽量清楚地解释我的问题。
我有一个 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)