赤で示したシナリオを試してみると、WSO2 ESB を使用してブラウザー [Rest クライアント] から REST バックエンドを呼び出すことができません。
Content Type と MessageFormatter は既に試しました。何か間違っているのでしょうか、それとも REST API の制限です。
シナリオ A のソース コード:
<?xml version="1.0" encoding="UTF-8"?>
<api xmlns="http://ws.apache.org/ns/synapse" name="InvokeASservice" context="/invokeWS" hostname="10.203.101.76">
<resource methods="GET" uri-template="/{str1}">
<inSequence>
<log level="full" separator=",">
<property name="sequence" value="** Request Recieved**"/>
</log>
<property name="REST_URL_POSTFIX" expression="fn:concat('/get?id=',get-property('uri.var.str1'))" scope="axis2" type="STRING"/>
<send>
<endpoint>
<address uri="http://10.203.101.76:9765/services/PersonInfoService.PersonInfoServiceHttpEndpoint/"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<log level="full" separator=",">
<property name="sequence" value="** Message recieved**"/>
</log>
<property name="ContentType" value="application/xml" scope="axis2"/>
<send/>
</outSequence>
<faultSequence/>
</resource>
</api>
ブラウザ エラー:
#####################アップデート#####################
シナリオ A は、ソースを変更した後に動作するようです
<api xmlns="http://ws.apache.org/ns/synapse" name="InvokeASservice" context="/invokeWS" hostname="10.203.101.76">
<resource methods="GET" uri-template="/{str1}">
<inSequence>
<log level="full" separator=",">
<property name="sequence" value="** Request Recieved**"/>
</log>
<property name="REST_URL_POSTFIX" expression="fn:concat('/get?id=',get-property('uri.var.str1'))" scope="axis2" type="STRING"/>
<send>
<endpoint>
<address uri="http://10.203.101.76:9765/services/PersonInfoService.PersonInfoServiceHttpEndpoint/"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<send/>
</outSequence>
<faultSequence/>
</resource>
</api>
ただし、シナリオ C はまだ解決されていないパズルであり、応答が xml 形式で送信されます。outSequence に以下を追加してみました。助けにならない
<outSequence>
<property name="messageType" value="application/json" scope="axis2" type="STRING"/>
<send/>
</outSequence>