2016-04-26 86 views
0

我试图实现WSO2 API管理器来处理对API端点的调用,并对响应进行一些调解。我在发布者中添加了一个API,将http端点设置为远程API并实现了一些中介。一切都很好。 我有以下映射: {背景}/{版本}/RetrieveResource/{RESOURCEID} - > {API服务器}/RetrieveResource/{RESOURCEID}WSO2 AM HTTP端点重写url

现在我想改变,像这样的映射: {背景}/{version}/Resource/{resourceid} - > {api server}/RetrieveResource/{resourceid}

所以我希望我的WSO2 api有路径/ Resource/1,调用远程api/RetrieveResource/1。因此,我试图在我的序列中使用重写中介。这会更改我的“To”标题,但不会调用正确的端点路径。我打电话资源/ 1,我调解它RetrieveResource/1,但仍然WSO2调用端点资源/ 1这ofcourse给了我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

我发现了很多试错后,下面的解决方案。也许这可以帮助未来的人。

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