Azure Api Management将XML转换为JSON策略入站

时间:2015-09-07 20:32:13

标签: azure azure-api-management

我正在尝试在API中定义一个将XML转换为JSON的策略。我们的后端API目前仅支持JSON,但我希望客户能够发布XML。我可以成功将JSON转换为XML作为出站策略,但入站策略只会导致空帖。

工作出境政策是:

<outbound>
    <base />
    <json-to-xml apply="content-type-json" consider-accept-header="true" />
</outbound>

入站政策实际上是相反的:

<inbound>
    <xml-to-json kind="direct" apply="content-type-xml" consider-accept-header="true" />
</inbound>

我创建了一个指向requestbin实例的新测试API,因此我可以检查请求。我在邮递员中创建了一个简单的XML请求,并将Content-Type设置为text / xml,但requestbin中的请求始终显示一个空帖子。

我尝试使用@miao-jiang下面的有用评论进行调试。跟踪显示已应用策略但已删除内容长度。我想知道这可能是根本原因吗?

2跟踪日志中的相关条目:

{"source":"xml-to-json", "timestamp":"2015-09-08T19:51:01.5919446Z", elapsed":"00:00:00.2116541", "data":"XML-to-JSON policy was applied. Original Content-Length header was removed as its value was invalidated. Content-Type header was set to 'application/json'."}

您可以在此处看到已应用该策略,但请求中不存在json。

1 个答案:

答案 0 :(得分:3)

我试图重现你的问题。你能否确认你的后端是否支持Transfer-Encoding:chunked?

xml-to-json策略中发生的情况是它删除了原始内容长度标头,并将其替换为Transfer-Encoding:chunked,因为转换后长度会有所不同,我们无法预测长度。

当我使用支持Transfer-Encoding的后端测试时:chunked,它运行正常。当我用另一个不支持它的后端测试时,我看到了你描述的相同行为。所以我想知道你是否也发生了这件事。