2016-04-26 8 views
0

APIエンドポイントへの呼び出しを処理し、応答に何らかの調停を行うWSO2 APIマネージャを実装しようとしています。私はパブリッシャーにAPIを追加し、HTTPエンドポイントをリモートAPIに設定し、いくつかのメディエーターを実装しました。すべてがうまくいきます。 私は次のマッピングがあります。 {コンテキスト}/{バージョン}/RetrieveResource/{RESOURCEID} - > {APIサーバ}/RetrieveResource/{RESOURCEID}WS02 AM HTTPエンドポイントの書き換えURL

今、私はそうのようなマッピング変更したい: {コンテキストを}}/{version}/Resource/{resourceid} - > {api server}/RetrieveResource/{resourceid}

私のWSO2 APIには、リモートapi/RetrieveResource/1。それゆえ、私は、順番に書き換えメディエーターを使用しようとしました。これは私の "To"ヘッダーを変更しますが、正しいエンドポイントパスを呼び出さない。

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

私は:私は、私はRetrieveResource/1にそれを仲介するが、WSO2はまだofcourseのは、次のように私のメディエータが見えてくれ404

を与えるリソース/ 1などのエンドポイントを呼び出し、リソース/ 1呼び出します明らかに何かが欠けていれば、どんな助けでも大歓迎です。 WSO2 API Cloudで似たような状況で

答えて

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

、私はこのチュートリアルで説明するようにREST_URL_POSTFIXに新しい値を設定するプロパティ伝達物質を使用:https://docs.wso2.com/display/APICloud/Change+the+Default+Mediation+Flow+of+API+Requests

+0

ありがとうございました。私はREST_URL_POSTFIXを変更する必要があると思った。私は成功しなかったXMLでそれを試しました、あなたはこれを行う方法の例を持っていますか? Eclipseでメディエーターを書く必要を避けたい。 – Cerebres