我希望每当用户输入http://localhost:8280/services/Facebook/sea
时,实际请求应为http://localhost:8280/services/Facebook/search?q=jack
。这是我的代理服务Facebook的synapse.xml配置的一部分。但它不起作用,配置有什么问题?
<proxy name="Facebook" transports="https http" startOnLoad="true" trace="disable">
<target>
<endpoint>
<address uri="http://graph.facebook.com"/>
</endpoint>
<inSequence>
<rewrite>
<rewriterule>
<action value="search?q=jack" regex="sea" type="replace" fragment="host"/>
</rewriterule>
</rewrite>
<log level="full"/>
</inSequence>
<outSequence>
<send/>
</outSequence>
</target>
</proxy>
答案 0 :(得分:0)
需要替换的部分位于URL的路径中。所以你应该将fragment属性设置为“path”。应使用单独的操作设置查询部分:
<rewrite>
<rewriterule>
<action value="search" regex="sea" type="replace" fragment="path"/>
<action value="q=jack" type="set" fragment="query"/>
</rewriterule>
</rewrite>