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

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

Maven 連動関係としての拡張機能のポリシーへの追加

ポリシーで HTTP ポリシートランスフォーム拡張機能を使用するには、最初に Maven 連動関係をポリシーの POM ファイルに追加する必要があります。ポリシーの POM ファイルの dependency セクションに次のコードを追加します。

  <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>

NOTE:​ HTTP ポリシートランスフォーム拡張機能を使用するポリシーがパッケージ化されている場合、​Mule HTTP Connector​ が不必要にポリシー JAR ファイルに追加されます。コネクタは、ポリシーが適用されるアプリケーションにすでに存在します。そのため、上記のスニペットには exclusion が追加されています。

また、ポリシーの POM ファイルで ​mule-maven-plugin​ パラメーターバージョンを ​3.3.2​ 以降に設定してください。

Namespace (名前空間)

<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 Request Headers List (mule-http-policy-transform-extension 3.1.0 以降)

    • Add Response Headers

    • Add Response Headers List (mule-http-policy-transform-extension 3.1.0 以降)

  • Remove Headers

  • Set Response

  • Set Request

Add Headers 操作

Add Request Headers

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

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

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

パラメーター
  • headers

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

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

Add Request Headers List

この操作は mule-http-policy-transform-extension 3.1.0 で追加されました。

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

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

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

パラメーター
  • http-transform:new-headers

    各ヘッダーに ​http-transform:header​ を追加する必要があります。 各 http-transform:header には、リテラル式または DataWeave 式で定義された ​headerName​ および ​headerValue​ 属性が必要です。

    <http-transform:add-request-headers-list>
        <http-transform:new-headers>
            <http-transform:header headerName="FirstHeader" headerValue="FirstHeaderValue"/>
            <http-transform:header headerName="#['SecondHeader']" headerValue="#['SecondHeaderValue']"/>
            <http-transform:header headerName="ThirdHeader" headerValue="ThirdHeaderValue"/>
        </http-transform:new-headers>
    </http-transform:add-request-headers-list>

ポリシー設定に複数の値を持つ ​keyvalues​ 型のプロパティがある場合、この操作では DataWeave 式が許可されます。

...
configuration:
  - propertyName: requestHeaders
    name: Reques Headers
    description: Header Names and values
    type: keyvalues
    optional: true
    allowMultiple: true
...

上記の設定では、ハンドルバーを使用して、ポリシーに追加されるヘッダーを展開できます。

...
<http-transform:add-request-headers-list>
    <http-transform:new-headers>
        {{#each requestHeaders}}
        <http-transform:header headerName="{{{this.key}}}" headerValue="{{{this.value}}}"/>
        {{/each}}
    </http-transform:new-headers>
</http-transform:add-request-headers-list>
...

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>

Add Response Headers List

この操作は mule-http-policy-transform-extension 3.1.0 で追加されました。

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

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

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

パラメーター
  • http-transform:new-headers

    各ヘッダーに ​http-transform:header​ を追加する必要があります。 各 http-transform:header には、リテラル式または DataWeave 式で定義された ​headerName​ および ​headerValue​ 属性が必要です。

    <http-transform:add-response-headers-list>
        <http-transform:new-headers>
            <http-transform:header headerName="FirstHeader" headerValue="FirstHeaderValue"/>
            <http-transform:header headerName="#['SecondHeader']" headerValue="#['SecondHeaderValue']"/>
            <http-transform:header headerName="ThirdHeader" headerValue="ThirdHeaderValue"/>
        </http-transform:new-headers>
    </http-transform:add-response-headers-list>

ポリシー設定に複数の値を持つ ​keyvalues​ 型のプロパティがある場合、この操作では DataWeave 式が許可されます。

...
configuration:
  - propertyName: responseHeaders
    name: Reques Headers
    description: Header Names and values
    type: keyvalues
    optional: true
    allowMultiple: true
...

上記の設定では、ハンドルバーを使用して、ポリシーに追加されるヘッダーを展開できます。

...
<http-transform:add-reponse-headers-list>
    <http-transform:new-headers>
        {{#each responseHeaders}}
        <http-transform:header headerName="{{{this.key}}}" headerValue="{{{this.value}}}"/>
        {{/each}}
    </http-transform:new-headers>
</http-transform:add-response-headers-list>
...

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>