映射模板的默认内容类型

Nor*_*ole 5 content-type amazon-web-services aws-lambda aws-api-gateway

不幸的是,我正在与我的项目的数据提供者合作,该数据提供者不遵守任何标准,因此请求标头中没有指定内容类型。实际上它是指定的,但使用与内容类型不同的键。

POST 请求的有效负载是 xml 格式,因此据我了解,我们需要使用映射模板将有效负载包装在 json 对象中。当我们将内容类型指定为集成请求部分中的设置类型之一时,所有这一切都非常有效。

现在据我了解,如果请求标头中未指定内容类型,那么它应该默认为“application/json”并执行与该类型关联的映射模板。在我们的例子中,它的行为就像忽略映射模板,这反过来会导致返回以下错误:

{"Type":"User","message":"无法将请求正文解析为 json。"}

只需提及,请求将发送到 AWS Lambda 进行处理。

我们有什么想法可以让它发挥作用吗?

编辑:我已确认默认值为“application/json”,以防标头中未设置 Content-Type。在这种情况下,我假设我遇到的是一个错误。

tho*_*ace 0

如果您不太依赖映射模板,则始终可以使用 lambda 代理集成:http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api-as -simple-proxy-for-lambda.html

实际上,这将解析主体的责任转移回您的 lambda 函数。您的event对象现在将包含一个body字符串 - 因此无论标头如何, api-gw 都会简单地将主体传递给您的函数来处理。这将允许您将正文解析为 XML,即使内容类型标头丢失/无效。