我与我的项目的数据提供程序一起工作,不幸的是不遵守任何标准,因此在请求的标头中没有指定内容类型。实际上它是指定的,但是使用不同的键然后是内容类型。
POST请求的有效负载是xml格式,因此据我所知,我们需要使用映射模板将有效负载包装在json对象中。当我们将content-type指定为Integration Request部分中的一个设置类型时,所有这些都非常有用。
现在我的理解是,如果请求标头中没有指定content-type,那么它应该默认为' application / json'并执行与该类型关联的映射模板。在我们的例子中,它表现得像是忽略了映射模板,而模板又返回了以下错误:
{"输入":"用户","消息":"无法将请求正文解析为json。"}
请注意,请求将被发送到AWS Lambda。
我们如何才能实现这一目标?
编辑:我已确认默认为' application / json'如果未在标题内设置Content-Type。在这种情况下,我假设我遇到的是一个错误。
答案 0 :(得分: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,即使内容类型标头丢失/无效。