AmazonのAWS APIゲートウェイを、RESTを使用してフロントエンドの従来のSOAPサービスに使用しようとしています。私はリソースリクエストを受け取り、ボディマッピングテンプレートで基本的にハードコードSOAPリクエストを行うことができます。 SOAPサービスが呼び出され、XML SOAP応答が返されます。ここまでは順調ですね。XMLをJSON AWS API Gatewayに変換するにはどうすればよいですか?
インテグレーションレスポンスでは、このSOAPエンベロープ(基本的にはXML)を取得し、それをJSONモデルにマッピングする必要があります。私はこれがどうやって行えるのかは分かりませんが、何かが欠けているはずです。次のコードは、生の応答を取得しますが、私は要素にアクセスする方法が表示されない:
#set($inputRoot = $input.path('$'))
{
$input.body
}
想像して、私の応答は次のようになります。そして、
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:getProdResponse xmlns:ns1="urn:productlist">
<code xsi:type="xsd:string">100</return>
<message xsi:type="xsd:string">this is a book</return>
</ns1:getProdResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
ボディマッピングテンプレートで、私はこのような何かをしたい:
#set($inputRoot = $input.path('$'))
{
"response-code" : "$input.Envelope.Body.getProdResponse.code",
"response-message" : "$input.Envelope.Body.getProdResponse.message"
}
私はおそらくSOAPサービスを呼び出すためのラムダ関数を書くことができますが、それは妥当ではないようです。私は運が嫌いですか?
@ paulsm4 AWS APIゲートウェイマッピングテンプレートを作成する際の質問です。変換はAPIゲートウェイサービス内で行われます。これはJavaScriptの質問ではなく、ブラウザで変換が行われていません。 –