WSO2 AM HTTP端点重写URL

时间:2016-04-26 14:00:01

标签: wso2 wso2esb wso2-am

我正在尝试实现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>

我显然遗漏了一些东西,非常感谢任何帮助。

2 个答案:

答案 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"/>