首页 > 解决方案 > 在 AWS Api Gateway 中定义后备映射模板很热门?

问题描述

我通过 AWS API Gateway 中的 API 公开了一个 POST 方法。它将处理某个 JSON。但是有一个奇怪的要求:我应该接受任何东西并总是返回 200 状态码(只要服务可用并且当然可以工作)。

因此,如果我收到 Content-Type: image/jpeg、application/xml 或其他任何内容的调用,我必须能够将请求映射到我的 Lambda 函数。

我已经使用 VTL(速度模板语言)将任何请求映射到自定义类型,问题是我必须在集成请求中指定我想要支持的每一个内容/类型。

我想为不在我已经定义的内容类型中的每个内容类型定义一个后备映射模板。不允许将“*/*”指定为 Content-Type。

我不能将When no template matches the request Content-Type header选项用作直通,因为默认情况下 lambda 函数会尝试从 JSON 格式反序列化正文。

有任何想法吗?

标签: aws-lambdaaws-api-gatewayasp.net-core-2.1

解决方案


我认为您应该启用该When no template matches the request Content-Type header选项。 如文档所述,您的 Lambda 将获得一个 API Gateway 事件。此事件有一个headers字段,在 POST 上应该包含一个content-type字段。如果您的代码理解内容类型,则处理它。如果不是,则返回具有正确状态代码和任何适当内容的响应。这不是在 API 网关端,而是在 Lambda 端。

有关其他想法,请参阅此博客。


推荐阅读