首页 > 解决方案 > 在对 AWS 代理 Lambda 的 API Gateway 请求中,isBase64Encoded 始终为 false

问题描述

所以我有这个 API 网关,它在 POST 上命中一个使用 AWS-PROXY 集成的 lambda。

我的请求类如下所示:

public class ApiGatewayProxyRequest {
    private String resource;
    private String path;
    private String httpMethod;
    private Map<String, String> headers;
    private Map<String, String> queryStringParameters;
    private Map<String, String> pathParameters;
    private Map<String, String> stageVariables;
    private Context context;
    private String body;
    private boolean isBase64Encoded;
    ... snip
}

我正在通过 POST 请求发送文件的 API 网关,文件内容稍后在我的 APIGatewayProxyRequest 的正文字段中可用,这一切都很好。

问题是我希望二进制数据进行 Base64 编码,并且所有非二进制数据都保持原样。

所以我在我的 API Gateway 的 BinaryMediaTypes 中添加了多种二进制类型。这些文件(当正确设置 Content-Type 标头时)会导致文件在请求正文中正确编码为 base64。

现在我遇到的问题是:尽管 API 网关将文件正确编码为 base64,但请求中的 isBase64Encoded 字段永远不会为真,它总是被接收为假。

知道为什么吗?根据文档,此字段应包含一个布尔标志,以指示适用的请求 paylad 是否为 Base64 编码。

https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html

谢谢

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

解决方案


推荐阅读