首页 > 解决方案 > 二进制文件的 aws api 网关映射模板

问题描述

我正在尝试将二进制文件和字符串参数发送到 AWS API Gateway。

这是 API Gateway POST 上的映射模板:

{
    "imageFile" : $input.params('imageFile'),
    "purdueUsername" : $input.params('purdueUsername'),
    "description" : $input.params('description'),
    "price" : $input.params('price'),
    "longitude" : $input.params('longitude'),
    "latitude" : $input.params('latitude'),
    "category" : $input.params('category'),
}

发出 post 请求会导致: 在此处输入图像描述

当我尝试这个

{
    "imageFile" : "$input.params('imageFile')",
    "purdueUsername" : "$input.params('purdueUsername')",
    "description" : "$input.params('description')",
    "price" : "$input.params('price')",
    "longitude" : "$input.params('longitude')",
    "latitude" : "$input.params('latitude')",
    "category" : "$input.params('category')",
}

我得到空参数。api 没有收到我通过 POST 请求发送的参数。

在此处输入图像描述

我应该如何更改映射模板?注意:当我只尝试在映射模板中使用 imageFile 并且只发送没有额外参数的二进制文件时,它完全可以正常工作。

{
"imageFile" : "$input.body"
}

但是,我希望能够在二进制文件旁边发送其他参数。

标签: amazon-web-servicesaws-lambdaaws-api-gateway

解决方案


这就是我解决问题的方法。我在 POST 请求的正文中发送二进制文件,并将其他参数作为标头发送。

这是我放在 AWS API Gateway 上的映射模板

{
    "purdueUsername" : "$input.params('purdueUsername')",
    "description" : "$input.params('description')",
    "price" : "$input.params('price')",
    "longitude" : "$input.params('longitude')",
    "latitude" : "$input.params('latitude')",
    "category" : "$input.params('category')",
    "isbnNumber" : "$input.params('isbnNumber')",
    "imageFile" : "$input.body"
}

推荐阅读