4

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

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

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

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

刚才提到,请求被发送到 AWS Lambda 进行处理。

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

编辑:如果没有在标题中设置 Content-Type,我已经确认默认值为 'application/json'。在那种情况下,我假设我遇到的是一个错误。

4

1 回答 1

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,即使内容类型标头丢失/无效。

于 2017-07-24T11:37:03.027 回答