2017-11-13 9 views
0

をバックエンドに送られたJSONペイロードを変更WSO2のAPIマネージャは、私はREST APIのURLが定義されている

https://hostname/[version]/[service]/[operation]

として、私は内部のバージョンと操作を置くために、WSO2のAPI ManagerでJSONペイロードを変換したいと思います。

だから、WSO2は、次の形式でバックエンドにそれを送信します:

POST https://backend/[service] 
{ 
    “version”: [version], 
    “operation”: [operation] 
} 

だから私はURLからJSONペイロードにバージョンと操作を配置する必要があります。どうやってするの?

+0

は、いくつかのオプションがありますJSONペイロードを構築することができます元のペイロードに沿って、またはその代わりにバージョン? – gusto2

+0

元のペイロードに沿って送付したいと思います。元のペイロードには操作とバージョンが追加されます。 – user1563721

答えて

0

私は、新しいペイロードとPOSTをリソースURI定義(APIコンテキストではない)からの値で作成したいと考えています。

  • あなたがメソッドを(リソースはPOSTメソッドを持っている)を変更する必要はありません:

    を前提とします。投稿

  • 元の要求にも

あなたはESB構築のためのようなメッセージを(シナプス)のメディエーション・フローを作成することもJSONです。

メディエーションのプラグインについては、文書Adding Mediation Extensionsに記載されています。あなたが操作を送信したい - この調停は調停でAPI

持つリソースhttps://hostname/[version]/[service]/[operation]

のリクエストごとに実行されます、あなたは

<payloadFactory media-type="json"> 
    <format>{ 
     "version":"$1", 
     "service": "$2", 
     "some_original_data": "$3" 
    }</format> 
    <args> 
    <arg expression="get-property('uri.var.version')"/> 
    <arg expression="get-property('uri.var.service')"/> 
    <arg expression="$.person.name" evaluator="json" /> 
    </args> 
</payloadFactory> 
+0

私は 'https:// hostname/01.00/test/myoperation'でそれをやろうとしています。私は常に' version'と 'service'を空の文字列として取得します。何が間違っているかもアドバイスできますか?メディエーションフローはあなたの投稿に正確に記述されているように、 'version'と' service'はAPIコンテキスト定義のパラメータとして定義されています。 payloadFactoryが引数式で値を見ることができないようです... – user1563721

関連する問題