如果请求包含 Accept=application/xml,我正在尝试将 json 响应转换为 xml。否则,应返回 json 响应。
这是我的政策:
<policies>
<inbound><base /></inbound>
<backend><base /></backend>
<outbound>
<base />
<json-to-xml apply="content-type-json" consider-accept-header="true" />
</outbound>
<on-error><base /></on-error>
</policies>
当我在没有 Accept 标头的情况下对此进行测试时,一切都很好(200 OK 并且正确返回了 json)。
但是,添加接受标头,我得到 406 Not Acceptable。
可在https://gist.github.com/jhgbrt/9df92cb0a140804ea01c获得已编辑的跟踪(添加标头 Ocp-Apim-Trace:true 后)。在该跟踪中,您将看到以下内容:
- 在“入站”部分确认存在具有值“应用程序/xml”的请求标头“接受”。该
request-executor
块包含一条消息,说明“请求正在转发到后端服务”。 - 在“出站”块中,您已经看到 406 不可接受并删除了 Accept 标头,之后 json-to-xml 块因此而失败。
我错过了什么?