APIkit を使用して、WSDL 宣言に基づいて、アプリケーションの応答にヘッダーを追加します。
この例を実行するには、tshirt2.wsdl API 定義をダウンロードして、それに基づいて Mule アプリケーションを作成する必要があります。
詳細は、「APIkit for SOAP を使用する場合の前提条件」と「APIkit for SOAP プロジェクトの作成」を参照してください。
次の例では、アプリケーションの応答に APIUsageInformation ヘッダーを追加しています。
-
Anypoint Studio で、
src/main/resources/api の tshirt2.wsdl を開き、コントラクトで必要な APIUsageInformation 要素までスクロールします。 -
キャンバスで、
OrderTshirt:/soapkit-config フローの Transform Message コンポーネントを選択します。次の DataWeave コードを使用できます。
{ body : { ns0#OrderTshirtResponse: { orderId: "I got a request from " ++ payload.body.ns0#OrderTshirt.name ++ " using the following auth header " ++ (payload.headers["AuthenticationHeader"].ns0#AuthenticationHeader.apiKey default "") } } write "application/xml" } -
APIUsageInformation ヘッダー宣言を追加します。{ body : { ns0#OrderTshirtResponse: { orderId: "I got a request from " ++ payload.body.ns0#OrderTshirt.name ++ " using the following auth header " ++ (payload.headers["AuthenticationHeader"].ns0#AuthenticationHeader.apiKey default "") } } write "application/xml", headers: { (1) header: { ns0#APIUsageInformation: { } } write "application/xml" } }1 この DataWeave コードは、 Transform Message コンポーネントで生成される出力にヘッダーを追加します。 -
apiCallsRemaining ヘッダーを APIUsageInformation 要素に追加します。{ body : { ns0#OrderTshirtResponse: { orderId: "I got a request from " ++ payload.body.ns0#OrderTshirt.name ++ " using the following auth header " ++ (payload.headers["AuthenticationHeader"].ns0#AuthenticationHeader.apiKey default "") } } write "application/xml", headers: { header: { ns0#APIUsageInformation: { apiCallsRemaining: 10 (1) } } write "application/xml" } }1 apiCallsRemaining を 10 に設定します。 -
保存してプロジェクトをもう一度実行します。
-
SoapUI で、
OrderTshirt 要求をもう一度実行します。APIkit for SOAP の応答エンベロープは次のようになります。
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<ns0:APIUsageInformation xmlns:ns0="http://mulesoft.org/tshirt-service">
<apiCallsRemaining>10</apiCallsRemaining>
</ns0:APIUsageInformation>
</soap:Header>
<soap:Body>
<ns0:OrderTshirtResponse xmlns:ns0="http://mulesoft.org/tshirt-service">
<orderId>I got a request from John, using the following auth header 987654321</orderId>
</ns0:OrderTshirtResponse>
</soap:Body>
</soap:Envelope>