【发布时间】:2015-12-28 11:09:29
【问题描述】:
不幸的是,我正在与一个不符合任何标准的项目的数据提供者合作,因此在请求的标头中没有指定内容类型。实际上它是指定的,但与内容类型不同的键。
POST 请求的负载是 xml 格式,所以据我了解,我们需要使用映射模板将负载包装在 json 对象中。当我们将 content-type 指定为集成请求部分中的设置类型之一时,所有这些都非常有用。
现在据我了解,如果请求标头中未指定 content-type,那么它应该默认为“application/json”并执行与该类型关联的映射模板。在我们的例子中,它的行为就像它忽略了映射模板,这反过来导致返回以下错误:
{"Type":"User","message":"无法将请求正文解析为 json。"}
请注意,请求被发送到 AWS Lambda 进行处理。
有什么想法可以让它发挥作用吗?
编辑:我已确认默认值为“application/json”,以防标头中未设置 Content-Type。在这种情况下,我假设我遇到的是一个错误。
【问题讨论】:
-
如果默认的内容类型是application/json,难道网关期待 JSON,并且拒绝请求,因为那不是有效载荷?
-
是和不是。这与是否调用映射模板无关,它只是指定应该调用哪一个。至少应该调用映射模板。如果我将 Content-Type 显式设置为 application/json,则调用映射模板,并将 xml 内容很好地转换为 JSON 对象,一切都很好。问题是,当缺少该内容类型时,不会调用默认值,它应该是应用程序/json。 AWS 代表在他们的论坛上已经确认应该调用默认值。看起来这可能是 AWS 中的一个错误。
-
默认
Content-Type可以是'*'。 -
也试过了。没有幸福的结局!
-
有什么新想法吗?
标签: amazon-web-services content-type aws-lambda aws-api-gateway