Azure Api 管理将 XML 转换为 JSON 策略入站
Azure Api Management convert XML to JSON policy inbound
我正在尝试在 API 中定义一个策略以将 XML 转换为 JSON。我们的后端 API 目前仅支持 JSON,但我希望客户端能够 post XML。我可以成功地将 JSON 转换为 XML 作为出站策略,但入站策略只会导致空 post.
有效的出境政策是:
<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>
我创建了一个新测试 API 指向一个 requestbin 实例,这样我就可以检查请求了。我在 postman 中创建了一个简单的 XML 请求,并将 Content-Type 设置为 text/xml,但 requestbin 中的请求始终显示空 post.
我尝试使用下面@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。
我试图重现你的问题。您能否确认您的后端是否支持 Transfer-Encoding: chunked?
xml-to-json 策略中发生的事情是它删除了您原来的 content-length header,并将其替换为 Transfer-Encoding:chunked,因为长度会有所不同转换后,我们无法预测长度。
当我使用支持 Transfer-Encoding:chunked 的后端进行测试时,它工作正常。当我用另一个不支持它的后端进行测试时,我看到了与您描述的相同的行为。所以我想知道这是否也发生在你身上。
我正在尝试在 API 中定义一个策略以将 XML 转换为 JSON。我们的后端 API 目前仅支持 JSON,但我希望客户端能够 post XML。我可以成功地将 JSON 转换为 XML 作为出站策略,但入站策略只会导致空 post.
有效的出境政策是:
<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>
我创建了一个新测试 API 指向一个 requestbin 实例,这样我就可以检查请求了。我在 postman 中创建了一个简单的 XML 请求,并将 Content-Type 设置为 text/xml,但 requestbin 中的请求始终显示空 post.
我尝试使用下面@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。
我试图重现你的问题。您能否确认您的后端是否支持 Transfer-Encoding: chunked?
xml-to-json 策略中发生的事情是它删除了您原来的 content-length header,并将其替换为 Transfer-Encoding:chunked,因为长度会有所不同转换后,我们无法预测长度。
当我使用支持 Transfer-Encoding:chunked 的后端进行测试时,它工作正常。当我用另一个不支持它的后端进行测试时,我看到了与您描述的相同的行为。所以我想知道这是否也发生在你身上。