2016-04-26 55 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"/>