2017-09-13 3 views
1

静的な ファイルを外部に配信するための「パススルー」WSO2 APIを作成しようとしています。私が理解しているように、WSO2では/{context}/{version}/{resourcePath}の下に複数の{resources}を設定する必要があります。WSO2静的コンテンツを配信するカスタムメディエーションシーケンスを作成する方法

私のコンテキストとバージョンが「ファイル」と「v1」であると仮定すると、これらの外部パスをバックエンドサーバ上のこれらの外部パスにマップする必要があります。

  • /files/v1/js/api.js - > /js/api.js
  • /files/v1/css/file.css - > /css/file.css
  • /files/v1/api/2.0/auth/signin - > /api/2.0/auth/signin

基本的に私がする必要があるすべては、前のコンテキスト&バージョンを剥ぎあるので、私はこのカスタム調停を試してみましたInSequence内のシーケンス

<sequence xmlns="http://ws.apache.org/ns/synapse" name="custom-seq"> 
    <log level="full"> 
    <property name="IN_MESSAGE" value="IN_MESSAGE" 
    </log> 
    <property name="resource_ep" 
      expression="get-property('axis2','REST_URL_POSTFIX')"/> 
    <header name="To" expression="get-property('resource_ep')"/> 
  <log level="custom"> 
    <property name="to" expression="get-property('To')"/> 
  </log> 
</sequence> 

ディレクトリツリー全体と一致するresourcePathを設定できますか?

の代わりに:/files/v1/api/{ver}/{auth}/{signIn} 私は/files/v1/api/**

私の問題は、私は約持っているということであるたいと思います。ファイルを提供する6つのトップレベルのディレクトリと、ディレクトリのいくつかは15レベルの深さです。

答えて

0

このフロー仲介シーケンス定義で解決できました。

<?xml version="1.0" encoding="UTF-8"?> 
<sequence xmlns="http://ws.apache.org/ns/synapse" name="custom-seq"> 
<property> name="resource_ep" 
      expression="get-property('axis2', 'REST_URL_POSTFIX')"/> 
<switch source="get-property('axis2', 'REST_URL_POSTFIX')"> 
    <case > regex=".*/api.*"> 
    <log level="custom"> 
     <property name="My-Mediator" value="/api"/> 
    </log> 
    <header name="To" expression="get-property('resource_ep')"/> 
    </case> 
    <case regex=".*/js.*"> 
    <log level="custom"> 
     <property name="My-Mediator" value="/js"/> 
    </log> 
    <header name="To" expression="get-property('resource_ep')"/> 
    </case> 
    <default> 
    <log level="custom"> 
     <property name="Tableau-Mediator" value="default (ignored)"/> 
    </log> 
    </default> 
</switch> 
</sequence> 

各caseブロックは、私が経由して提供させたい最上位のディレクトリを定義し /ファイル/ V1 /(または単に/ファイル/私はデフォルトのバージョンをV1作る場合)。

デフォルトのブロックでは、他のすべてを無視する必要があります。

私はまだ

/ファイル/ V1 /css/somedir/somefile.css

代わりの

/CSS/somedir/somefileという

に要求を送信するために私のクライアントアプリケーションを適応させる必要があり.css

関連する問題