我为我的REST API创建了代理:
直接调用目标端点时,例如:
POST http://products.example.com/items
你会得到像这样的位置标题的回复
http://products.example.com/items/123131
但如果我通过代理:
POST http://example.apigee.net/products/v2/items
然后新创建的资源的位置标头仍指向目标网址:
http://products.example.com/items/3423423
但我希望得到
http://example.apigee.net/products/v2/items/3423423
问题是:如何配置代理以重写URL以响应代理URL?
答案 0 :(得分:1)
不确定这是否有用,但我在How do you correctly return Location headers and do HATEOAS with Apigee?向你提出了一个非常类似的问题。我们最终需要编写自己的策略,该策略执行简单搜索并替换从目标服务器收到的响应。如果提供开箱即用的东西会很好。
答案 1 :(得分:0)
Apigee代理允许您在流的响应部分添加策略。示例如下:
<Flows>
<Flow name="myFlow">
<Description></Description>
<Request/>
<Response>
<Step>
<Name>ModifyLocationHeaderPolicy</Name>
</Step>
<Response/>
</Flow>
</Flows>
我建议你添加一个javascript或python或java callout策略,它将读取响应的Location头并重新编写它。在Javascript
中有如下效果locationHeader = context.getVariable("message.header.Location");
// modify it
context.setVariable("message.header.Location", locationHeader);