HTTP ポリシートランスフォーム拡張機能

Mule 4.1.0 以降では、HTTP ポリシートランスフォーム拡張機能をポリシーで使用できます。この拡張機能により、さまざまなポリシーを通過する HTTP 要求および応答の変更が簡略化されます。この拡張機能は、Mule 3.0.0 以降で有効です。

名前空間

<mule
xmlns:http-transform="http://www.mulesoft.org/schema/mule/http-policy-transform"

xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/http-policy-transform http://www.mulesoft.org/schema/mule/http-policy-transform/current/mule-http-policy-transform.xsd">

操作

  • Add Headers 操作

    • Add Request Headers

    • Add Response Headers

  • Remove Headers

  • Set Response

  • Set Request

Add Headers 操作

この操作は、Mule メッセージとの相関関係に応じて異なります。

  • 相関している - HTTP リスナおよびリクエスタの要求と応答にヘッダーを追加します。

  • 相関していない - 指定されたヘッダーで新しい要求と応答を作成します。

指定された outputType (出力タイプ) が ​response​ (応答) で、Mule メッセージに HTTP 要求が含まれる場合、この操作と Mule メッセージは相関していません。操作が実行されると、値全体が上書きされ、指定されたヘッダーで新しい応答が作成されます。 Mule メッセージに HTTP 応答が含まれる場合、ヘッダーが要求に追加されます。

Add Request Headers

この操作は、要求にヘッダーを挿入するために使用されます。この操作を使用するには、次の場所からコールを開始する必要があります。

  • ソースポリシー (​execute-next​ が呼び出される前)。

  • 操作ポリシー (​execute-next​ が呼び出される前)。

パラメータ
  • headers

    現在のメッセージ属性に追加されるヘッダーのマップに解決される DataWeave 式。

    <http-transform:add-request-headers outputType="response">
    <http-transform:headers>#[
    {
      'FirstHeader': 'FirstHeaderValue',
      'SecondHeader': 'SecondHeaderValue',
      'ThirdHeader': 'ThirdHeaderValue'
    }
    ]</http-transform:headers>
    </http-transform:add-request-headers>

Add Response Headers

この操作は、応答にヘッダーを挿入するために使用されます。この操作を使用するには、次の場所からコールを開始する必要があります。

  • ソースポリシー (​execute-next​ が呼び出された後)。

  • 操作ポリシー (​execute-next​ が呼び出された後)。

パラメータ
  • headers

    現在のメッセージ属性に追加されるヘッダーのマップに解決される DataWeave 式。

    <http-transform:add-response-headers>
    <http-transform:headers>#[
    {
      'FirstHeader': 'FirstHeaderValue',
      'SecondHeader': 'SecondHeaderValue',
      'ThirdHeader': 'ThirdHeaderValue'
    }
    ]</http-transform:headers>
    </http-transform:add-response-headers>

Remove Headers

この操作は、HTTP リスナおよびリクエスタの要求と応答の両方からヘッダーを削除します。返される属性は、入力属性と同じ種別です。この操作では大文字と小文字が区別されます。

パラメータ

  • header-names

    削除するヘッダー名の配列に解決される DataWeave 式。

    <http-transform:remove-headers>
        <http-transform:header-names>#[['FirstHeader', 'SecondHeader']]</http-transform:header-names>
    </http-transform:remove-headers>

Set Response

この操作は、完全な HTTP 応答を設定します。この操作は、 ポリシーによってフローが実行されないようにする場合、つまり、HTTP 応答が設定されていない場合に使用されます。

パラメータ

  • statusCode​ (状況コード) —  応答の HTTP 状況コードを表す整数。

  • reasonPhrase​ (理由を示す語句) —  応答の HTTP の理由を示す語句を表す文字列。

  • body​ (本文) —  HTTP 応答の内容。

  • headers (ヘッダー) —  HTTP 応答のヘッダーのマップに解決される DataWeave 式。

    <http-transform:set-response statusCode="203" reasonPhrase="policyReasonPhrase">
        <http-transform:body>#['policyPayload']</http-transform:body>
        <http-transform:headers>#[
            {
                'FirstHeader': 'FirstHeaderValue',
                'SecondHeader': 'SecondHeaderValue',
                'ThirdHeader': 'ThirdHeaderValue'
            }
        ]</http-transform:headers>
    </http-transform:set-response>

Set Request

この操作は、HTTP リクエスタが実行する完全な HTTP 要求を設定します。

パラメータ

  • requestPath​ (要求パス): HTTP 要求が送信されるパス。

  • body​ (本文): HTTP 要求の内容。

  • headers​ (ヘッダー): HTTP 要求のヘッダーのマップに解決される DataWeave 式。

  • uriParams​ (URI パラメータ): HTTP 要求の URI パラメータのマップに解決される DataWeave 式。

  • queryParams​ (クエリパラメータ): HTTP 要求のクエリパラメータのマップに解決される DataWeave 式。

    <http-transform:set-requester-request requestPath="/backend/policy/{policyUriParam}">
        <http-transform:body>#['policyPayload']</http-transform:body>
        <http-transform:headers>#[
            {
                'FirstHeader': 'FirstHeaderValue',
                'SecondHeader': 'SecondHeaderValue',
                'ThirdHeader': 'ThirdHeaderValue'
            }
        ]</http-transform:headers>
        <http-transform:uri-params>#[
            {
                'FirstUriParam': 'FirstUriParamValue',
                'SecondUriParam': 'SecondUriParamValue'
            }
        ]</http-transform:uri-params>
        <http-transform:query-params>#[
            {
                'FirstQueryParam': 'FirstQueryParamValue',
                'SecondQueryParam': 'SecondQueryParamValue'
            }
        ]</http-transform:query-params>
    </http-transform:set-requester-request>

Mule 3.0.0 以降へのアップグレード

注意: 以前の Mule バージョン (1.0.0 や 2.0.0 など) から 3.0.0 にアップグレードする場合、次の手順を追加する必要があります。

HTTP ポリシートランスフォーム拡張機能を使用するポリシーがパッケージ化されている場合、​Mule HTTP コネクタ​が不必要にポリシー JAR ファイルに追加されます。

この問題を回避するには、ポリシーの POM ファイルの拡張機能の連動関係宣言で、対応する除外を追加します。

  <dependency>
      <groupId>com.mulesoft.anypoint</groupId>
      <artifactId>mule-http-policy-transform-extension</artifactId>
      <version>${httpPolicyTransformVersion}</version>
      <classifier>mule-plugin</classifier>
      <exclusions>
          <exclusion>
              <groupId>org.mule.connectors</groupId>
              <artifactId>mule-http-connector</artifactId>
          </exclusion>
      </exclusions>
  </dependency>

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub