---
schema_version: "1"
id: 3376a5291fa7e34e936fe30468609bf037aca40db58968c83bdb34078066b926
title: REST バリデーター拡張機能の設定
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/api-manager/latest/rest-validator-extension.md
canonical_url: https://docs.mulesoft.com/jp/api-manager/latest/rest-validator-extension
source_site: docs.mulesoft.com
content_type: documentation
content_hash: bf142e503679492ba6b35731ccbcd143444b5de56869a0f475a7eb38643e8c79
description: MuleSoft Documentation Site
release: 2.x
latest: true
---
# REST バリデーター拡張機能の設定

REST バリデーター拡張機能では、RAML または OAS 仕様を使用するスキーマ検証を要求の属性に対して実行できます。また、この拡張機能では、デフォルト値が属性に追加されます (要求でまだ設定されていない場合)。

特に記載がない限り、このドキュメントは REST バリデーター拡張機能 v2.x にのみ適用されます。Mule Runtime Engine (Mule) アプリケーション XML などの Mule アーティファクトで REST バリデーター拡張機能を使用するには、以下の作業を行う必要があります。

1. [pom.xml ファイルに連動関係を含める](#include-dependency)​。
2. [名前空間とスキーマを Mule アーティファクトに含める](#add-namespace-and-schema)​。
3. [REST バリデーター拡張機能を設定する](#configure-rest-validator-extension)​。
4. [REST バリデーター操作を使用する](#use-operations)​。

## [](#include-dependency)pom.xml ファイルに連動関係を含める

`pom.xml`​ ファイルの ​`<dependencies>`​ セクションに次のスニペットを追加して、REST バリデーターを Mule アーティファクト (Mule アプリケーション XML など) に含めることができます。

```XML
<dependency>
		     <groupId>com.mulesoft.anypoint</groupId>
		     <artifactId>mule-rest-validator-extension</artifactId>
		     <version>${restValidatorVersion}</version>
		     <classifier>mule-plugin</classifier>
</dependency>
```

ベストプラクティスとして、使用する REST バリデーターのバージョンで ​`<properties>`​ セクション内に Maven プロパティを定義することをお勧めします。

```XML
<properties>
<restValidatorVersion>2.1.3</restValidatorVersion>
</properties>
```

## [](#add-namespace-and-schema)名前空間とスキーマを Mule アーティファクトに追加する

Mule アーティファクトで REST バリデーター操作を使用するには、次の名前空間とスキーマを含めます。

```text
xmlns:rest-validator="http://www.mulesoft.org/schema/mule/rest-validator"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/rest-validator http://www.mulesoft.org/schema/mule/rest-validator/current/mule-rest-validator.xsd"
```

## [](#configure-rest-validator-extension)REST バリデーター拡張機能を設定する

REST バリデーター拡張機能を設定するには、Mule アーティファクトに次の構文を追加します。

`<rest-validator:config name="validatorConfig" api="${specFile}"/>`

このスニペットには、設定に必要な属性が含まれます。​[追加属性](#config-reference)​を指定して、拡張機能をカスタマイズできます。次の例は、戦略を非逐次化する属性を使用する方法を示しています。

```XML
    <rest-validator:config name="configValidator" api="${specFile}" keepApiBaseUri="true">
        <rest-validator:attributes-deserializing-strategies arrayHeaderDelimiter="COMMA"/>
    </rest-validator:config>
```

## [](#use-operations)REST バリデーター操作を使用する

REST バリデーターを設定したら、バリデーター操作の使用を開始できます。

**操作名**

`validate-request`

**説明**

設定で指定された RAML または OAS 仕様に対して要求を検証します。

**使用例**

`<rest-validator:validate-request config-ref="validatorConfig"/>`

**属性の説明**

次の表に、属性と説明を示します。

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">属性</th>
<th class="tableblock halign-left valign-top">説明</th>
<th class="tableblock halign-left valign-top">必須かどうか</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>attributes</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>検証する属性を抽出する DataWeave 式。デフォルト値: #[attributes]</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>いいえ</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>payload</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>検証するペイロードを抽出する DataWeave 式。デフォルト値: #[payload]</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>いいえ</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>config-ref</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>REST バリデーターの設定。</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>はい</p>
</div></div></td>
</tr>
</tbody>
</table>

**Output (出力)**

定義されたスキーマに要求が違反していない場合、検証は正常に終了し、操作の結果で HTTP 要求属性は変更されません。違反している場合、デフォルト値がスキーマ検証に追加され、元の HTTP 要求属性と新しい HTTP 要求属性が出力に含まれます。

**エラー種別**

「validate-request」操作では、ファイルの取得時に問題が発生した場合や、検証が正常に終了しなかった場合に各種エラーが発生する可能性があります。

- `REST-VALIDATOR:BAD_REQUEST`
    
    一部の属性がスキーマと一致しない場合、エラーが発生します。以下のような属性が検証中に考慮されます。
    
    - フォームパラメーター
    - ヘッダー
    - クエリパラメーター
    - URI パラメーター
- `REST-VALIDATOR:METHOD_NOT_ALLOWED`
    
    スキーマで必須リソースの特定のメソッドがサポートされていない場合、エラーが発生します。
- `REST-VALIDATOR:RESOURCE_NOT_FOUND`
    
    ルートスキーマまたは一部の関連ファイルを取得できない場合、エラーが発生します。

## [](#config-reference)REST バリデーター拡張機能設定リファレンス

次の表で、バリデーター拡張機能で設定する属性について説明します。

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">属性</th>
<th class="tableblock halign-left valign-top">説明</th>
<th class="tableblock halign-left valign-top">必須かどうか</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>name</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>設定の一意の識別子。</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>はい</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>api</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>2.0.0 以降のバージョンの REST バリデーターを使用している場合、​<code>raml</code>​ 属性を使用する必要があります。これには、要求の検証の対象となる仕様ファイルの場所が含まれます。</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>はい</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>parser</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>要求の検証に使用されるパーサー。</p>
</div>
<div class="ulist">
<ul>
<li>
<p>AUTO (デフォルト)</p>
<div class="paragraph">
<p>APIKit は、AMF を使用して検証を開始しようとします。エラーが発生した場合、RAML パーサーが検証を実行します。</p>
</div>
</li>
<li>
<p>AMF</p>
<div class="paragraph">
<p>APIKit ルーターは AMF を使用して API を読み取り、受信要求を検証します。</p>
</div>
</li>
<li>
<p>RAML</p>
<div class="paragraph">
<p>APIKit ルーターは RAML パーサーを使用して API を読み取り、受信要求を検証します。</p>
</div>
</li>
</ul>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>いいえ</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>keepApiBaseUri</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>デプロイ済みアプリケーションの URI を使用して、仕様の ​<code>baseUri</code>​ プロパティを上書きできるかどうかを指定します。
コンソール操作を使用する必要がある場合、このプロパティを ​<code>true</code>​ に設定します。デフォルト値は ​<code>false</code>​ です。</p>
</div>
<div class="paragraph">
<p>2.0.0 以降のバージョンの REST バリデーターを使用している場合、​<code>keepRamlBaseUri</code>​ 属性を使用する必要があります。</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>いいえ</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>queryParamsStrictValidation</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>要求のすべてのクエリパラメーターが仕様ファイルで定義されているかどうかを検証します。一部のパラメーターが指定されていない場合、検証は失敗します。デフォルト値は ​<code>false</code>​ です。</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>いいえ</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>headersStrictValidation</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>仕様で定義されているすべての必須ヘッダーが要求で定義されているかどうかを検証します。一部のパラメーターが指定されていない場合、検証は失敗します。デフォルト値は ​<code>false</code>​ です。</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>いいえ</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>attributesDeserializingStrategies`</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>カンマで区切られた値の配列が含まれる HTTP ヘッダーの解析を許可します。</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>いいえ</p>
</div></div></td>
</tr>
</tbody>
</table>

## [](#rest-バリデーターと-apikit-の互換性リファレンス)REST バリデーターと APIKit の互換性リファレンス

REST バリデーター (​`pom.xml`​ 連動関係) は、ドメインを使用してアプリケーション間で共有できます。ただし、それらのアプリケーションの一部に APIKit の連動関係もある場合、各アプリケーションのそのバージョンの APIKit と、ドメインで使用する REST バリデーターのバージョンで必要な APIKit が一致している必要があります。

次の互換性の表に従うと、たとえば、ドメインで REST バリデーター v2.2.0 を使用している場合、APIKit を使用しているすべてのアプリケーションで 1.4.2 バージョンをインポートする必要があります。

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">REST バリデーターバージョン</th>
<th class="tableblock halign-left valign-top">ApiKit REST Module バージョン</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>2.2.4</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.9.0</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>2.2.3</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.8.3</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>2.2.2</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.7.0</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>2.2.1</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.5.3</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>2.2.0</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.4.2</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>2.1.3</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.3.17</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>2.1.2</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.3.11</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>2.1.1</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.3.5</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>2.1.0</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.3.5</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>2.0.0</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.2.0</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.2.0</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.1.16</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.1.1</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.1.1</p>
</div></div></td>
</tr>
</tbody>
</table>