ポイントカット参照

ポイントカットは、ポリシーが適用されるリソースを示します。
たとえば、API Manager でポリシーを適用している場合、このポリシーではポイントカットを使用して、適用先の Mule アプリケーションのエンドポイントを決定します。

カスタムポリシーにはポイントカット宣言を含める必要があります。ポイントカットでは、リテラル文字列を使用して、ポリシーの影響を受けるアプリケーション内のリソースを指定することができます。または、より幅広いリソースのセットにポリシーを適用する必要がある場合には、正規表現を使用することもできます。

Anypoint Platform にデプロイされている API にポリシーを適用する場合、ポイントカットをデフォルトプロパティの ​apiName​ と ​apiVersion​ に設定します。こうすることで、ポリシーを有効にする対象の API にのみ、そのポリシーが適用されます。ポイントカットは次のようになります。

<pointcut>
   <api-platform-gw:api-pointcut apiName="{{ apiName }}" apiVersion="{{ apiVersionName }}"/>
</pointcut>

これは、Mule 3.x を使用している場合のみ必要であることに注意してください。

ポイントカットを ​regex=”.*”​ などの幅広い正規表現に設定すると、望ましくない影響が発生する可能性があります。

プラットフォームを介してこのポリシーを 1 つの API に適用すると、デプロイしている他の API にも影響を及ぼす可能性があります。

オンサイトデプロイメントでポリシーを使用している場合は、ポリシーを複数の API に同時に適用するようにポイントカットを変更する必要がある場合があります。

リソースレベルポリシーの有効化

API が Mule 3.x の Mule 3.8.4 以降のバージョンで実行されている場合は、次のコードを使用してリソースレベルポリシーを含めます。

  {{#pointcutData}}
    <pointcut>
      <api-platform-gw:api-pointcut apiName="{{apiName}}" apiVersion="{{apiVersionName}}"/>
      <resource methodRegex="{{methodRegex}}" uriTemplateRegex="{{uriTemplateRegex}}"/>
    </pointcut>
  {{/pointcutData}}

{{^pointcutData.length}}
  <pointcut>
    <api-platform-gw:api-pointcut apiName="{{apiName}}" apiVersion="{{apiVersionName}}"/>
  </pointcut>
{{/pointcutData.length}}

また、YAML に次のプロパティを含めます: ​resourceLevelSupported: true

ポイントカットのカスタマイズ

ポイントカット内では、次の種類の要素を参照できます。

  • エンドポイント

  • アプリケーション

  • リソース

複数の要素が 1 つのポイントカット内で指定されている場合、それらは AND 式を使用している場合と同じように実装されます。

<pointcut>
   <resource uriTemplateRegex="/items/.*" />
   <resource methodRegex="GET" />
</pointcut>

複数の要素が別々のポイントカット親要素で指定されている場合、それらは OR 式を使用している場合と同じように実装されます。

参照アプリケーション

<pointcut>
   <app regex=".*" />
</pointcut>

参照エンドポイント

<pointcut>
   <endpoint regex=".*" />
</pointcut>

次の例では、プロパティからの値を使用します。

<pointcut>
    <endpoint regex="http://localhost:${http.port}/gateway/.*" />
</pointcut>

次の例も有効です。

<pointcut>
   <endpoint regex="http\:\/\/localhost:${http.port}\/gateway\/.*" />
</pointcut>

前の 2 つの例が機能するには、Mule の起動時または wrapper.conf ファイル内で ​http.port​ を次のように定義します。

wrapper.java.additional.4=-D​http.port=8081

http.port​ がアプリケーションレベルで定義されている場合、ポリシーを適用したときに解析の例外が発生します。

参照リソース

<pointcut>
   <resource methodRegex=".*" />
</pointcut>

特定のメソッド (GET、POST、PUT など) を参照できます。

たとえば、​<resource methodRegex=”P.*” />​ は、すべての POST、PUT、PATCH メソッドに適用されます。

デフォルトを使用した例

<pointcut>
   <resource uriTemplateRegex=".*" />
</pointcut>

この例では、パスを、RAML ファイルで指定される baseUri に指定できます。

リソースの第 1 レベルの絞り込みの例

<pointcut>
    <resource uriTemplateRegex="/items/.*" />
</pointcut>

Mule によって提供される Java クラスのみを使用できます。

カスタムポリシーの作成には、Mule で使用可能な任意のメッセージプロセッサを使用できますが、Java クラスは Mule によって提供されるもののみを使用できます。Mule アプリケーションの作成とは異なり、カスタムポリシーを作成するときにカスタム Java クラスを定義してコールすることはできません。これは、ポリシーを使用してカスタム Java クラスをバンドルする方法がないためです。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub