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