我正在尝试实现WSO2 API Manager来处理对API端点的调用,并对响应进行一些调解。我在发布者中添加了一个API,将http端点设置为远程API并实现了一些调解器。一切都很好。 我有以下映射: {context} / {version} / RetrieveResource / {resourceid} - > {api server} / RetrieveResource / {resourceid}
现在我想像这样更改映射: {context} / {version} / Resource / {resourceid} - > {api server} / RetrieveResource / {resourceid}
所以我希望我的WSO2 api具有调用远程api / RetrieveResource / 1的路径/ Resource / 1。因此,我试图在我的顺序中使用重写介体。这改变了我的" To"标头,但不调用正确的端点路径。我调用Resource / 1,我将它调整为RetrieveResource / 1,但是WSO2仍然将端点称为Resource / 1,其中当然给了我404.
我的调解员看起来如下:
<sequence xmlns="http://ws.apache.org/ns/synapse" name="custom_in">
<property name="WSO2_AM_API_ACCEPT_MESSAGE_TYPE" expression="get-property('transport', 'Accept')" scope="default"/>
<property name="Accept" scope="transport" action="remove"/>
<rewrite xmlns="http://ws.apache.org/ns/synapse">
<rewriterule>
<action value="RetrieveResource" regex="Resource" type="replace" fragment="path"/>
</rewriterule>
</rewrite>
</sequence>
我显然遗漏了一些东西,非常感谢任何帮助。
答案 0 :(得分:0)
在WSO2 API Cloud中的类似情况中,我使用 Property 介体将新值设置为REST_URL_POSTFIX,如本教程中所述:https://docs.wso2.com/display/APICloud/Change+the+Default+Mediation+Flow+of+API+Requests
答案 1 :(得分:0)
经过大量的追踪和错误后,我找到了以下解决方案。也许这可以帮助将来的某个人。
<property name="querystrings" expression="get-property('To')"/>
<rewrite outProperty="querystrings" xmlns="http://ws.apache.org/ns/synapse">
<rewriterule>
<action value="<what you want>" regex="<what you have>" type="replace" fragment="path"/>
</rewriterule>
</rewrite>
<property name="REST_URL_POSTFIX"
expression="get-property('querystrings')"
scope="axis2"/>