2012-03-30 5 views
4

WSO2 ESBをゲートウェイとして使用します。バージョン4.0.3を使用しています。既存のRESTfulサービスにJSONメッセージがあります。私はESBにREST APIがサポートされていることを知っています。しかし、WSO2 ESB RESTをRESTに解決する方法はまだありません。私はすべてのバックエンドサービスがJSON形式でRESTfulであることを意味します。誰でも助けてくれますか?WSO2 ESBはJSON形式でRESTからRESTをサポートしていますか?

答えて

-6

特定のESBを使用することで修正されていない場合は、UltraESBをチェックアウトすることができます - ここにはすべてのRESTメソッドのサンプルがあります[http://docs.adroitlogic.org/display/esb/Restful+Proxy+Services ]とJSONのための素晴らしいサポートも

免責事項がある - 私は創業者兼CTO AdroitLogic

+0

おかげで見つけることができ、payloadFactory及び財産メディエーター以下試してください。 ESBを既存のRESTfulサービスのゲートウェイとして使用したいだけです。私はUltraESBを見ていきます。たぶんそれは私のために便利です。 – user1302779

+0

こんにちは、Asankha。私はUltraESBを試しています。それは私のための良い製品であり、私のアプリケーションに適しているかもしれません。私はちょうど質問があります。それはフリー&オープンソースですか?エンタープライズアプリケーションで使用したい場合は何か制限はありますか?ありがとう。 – user1302779

4

WSO2 ESBは、受信、処理およびREST呼び出しを仲介するための優れたサポートを提供します。詳細については、[1][2]のサンプルをご覧ください。

+0

ありがとう、Thilini。しかし、上記の2つの例は、JSON REST呼び出しを受け取るWSO2 ESBの使用法を示しています。 JSONメッセージを使用したバックエンドRESTサービスのメッセージ処理はどうですか?それはサポートされていますか? – user1302779

+2

はい、サポートされていますが、サンプルは入手できませんが、次のスレッドの説明に従って環境を設定できます。http://stackoverflow.com/questions/9605712/wso2-esb-4-0-3--json-イン・レスト・サービス – Ratha

7

はい、私たちは、WSO2 ESBにはREST APIを持っているため、REST-RESTサービスをサポートしています。これは、着信RESTや他のフォーマットを処理してメディエーションを行い、終了(そのあるプロトコルは関係ありません)

プロキシ以下のあなたは、フォームデータをincommingアクセスする必要がある場合は基本的にあなたが

< messageFormatterを使用する必要があり、エンドRESTサービス をバックアップするRESTメッセージをincomming転送することができますcontentType = "application/x-www-form-urlencoded" class = "org.apache.axis2.transport.ht tp.XFormURLEncodedFormatter "/ >

< messageBuilderのcontentType =" アプリケーション/ x-www-form-urlencodedで」クラス= "org.apache.synapse.commons.builders.XFormURLEncodedBuilder" にあなたを可能に/ >

RESTは詳細を提出incomming抽出し、あなたが好むとして任意の調停を行う

REST TO REST VIA REST API              
<api name="studentSecureAPI" context="/SecureStudentRequest"> 
    <resource methods="POST" uri-template="/student/{name}"> 
     <inSequence> 
      <property name="REST_URI" expression="fn:substring($axis2:REST_URL_POSTFIX,16,fn:string-length($axis2:REST_URL_POSTFIX))"/> 
      <property name="AGE" expression="//xformValues//age"/> 
      <property name="STUDENT" expression="get-property('uri.var.name')"/> 
      <property name="DISABLE_CHUNKING" value="true" scope="axis2" type="STRING"/> 
      <property name="HTTP_METHOD" value="POST" scope="axis2" type="STRING"/> 
      <property name="ContentType" value="application/x-www-form-urlencoded" scope="axis2" type="STRING"/> 
      <property name="REST_URL_POSTFIX" scope="axis2" action="remove"/> 
      <property name="REST_URL_POSTFIX" expression="$ctx:REST_URI" scope="axis2"/> 
      <payloadFactory> 
       <format> 
        <POST> 
         <age>$1</age> 
        </POST> 
       </format> 
       <args> 
        <arg expression="$ctx:AGE"/> 
       </args> 
      </payloadFactory> 
      <send> 
       <endpoint> 
        <address uri="http://localhost:9764/as/services/RestService"/> 
       </endpoint> 
      </send> 
     </inSequence> 
     <outSequence> 
      <send/> 
     </outSequence> 
    </resource> 

REST TO REST VIA SIMPLE PROXY :                 
<proxy name="StudentRequestProxy" transports="https http" startOnLoad="true" trace="disable"> 
    <target> 
     <inSequence> 
      <property name="DISABLE_CHUNKING" value="true" scope="axis2" type="STRING"/> 
      <property name="ContentType" value="text/xml" scope="axis2" type="STRING"/> 
      <property xmlns:ns3="http://org.apache.synapse/xsd" name="Lang" expression="get-property('transport', 'Accept')" scope="default" type="STRING"/> 
      <log level="custom"> 
       <property name="HTTP_METHOD IS###########" expression="$axis2:HTTP_METHOD"/> 
      </log> 
      <switch source="$axis2:HTTP_METHOD"> 
       <case regex="GET"> 
        <property name="HTTP_METHOD" value="GET" scope="axis2" type="STRING"/> 
       </case> 
       <case regex="POST"> 
        <property name="HTTP_METHOD" value="POST" scope="axis2" type="STRING"/> 
       </case> 
       <default/> 
      </switch> 
      <send> 
       <endpoint> 
        <address uri="http://localhost:9764/as/services/RestService"/> 
       </endpoint> 
      </send> 
     </inSequence> 
     <outSequence> 
      <send/> 
     </outSequence> 
    </target> 
</proxy> 
3

最新のESBバージョン(4.8.1)はJSON REST呼び出しで完全に機能しています。

<payloadFactory media-type="json"> 
    <format> 
     { 
     "name":"$1", 
     "age":$2 
     } 
    </format> 
    <args> 
     <arg evaluator="json" expression="$ctx:name"/> 
     <arg evaluator="json" expression="$ctx:age"/> 
    </args> 
</payloadFactory> 
<property name="messageType" value="application/json" scope="axis2"/> 

詳しい情報はあなたのアドバイス、Asankhaためhere

関連する問題