第2章 Apicurio Registry のコンテンツルール
この章では、Apicurio Registry のコンテンツを管理するために使用されるオプションのルールを紹介し、利用可能なルール設定の詳細を提供します。
2.1. ルールを使用して、Apicurio Registry コンテンツを管理する リンクのコピーリンクがクリップボードにコピーされました!
Apicurio Registry に追加されたアーティファクトコンテンツのデプロイメントを管理するために、オプションのルールを設定できます。新しいアーティファクトバージョンを Apicurio Registry にアップロードするには、設定済みのすべてのグローバルルールまたはアーティファクトルールに合格する必要があります。設定されたアーティファクトルールは、設定されたグローバルルールを上書きします。
これらのルールの目的は、無効なコンテンツが Apicurio レジストリーに追加されないようにすることです。たとえば、次の理由でコンテンツが無効になる可能性があります。
-
特定のアーティファクトタイプ (
AVROやPROTOBUF など) の構文が無効です - 有効な構文で、セマンティクスが仕様に違反している
- 新しいコンテンツに現在のアーティファクトバージョンに関連する変更の違反が含まれる場合の非互換性
Apicurio Registry Web コンソール、REST API コマンド、または Java クライアントアプリケーションを使用して、オプションのコンテンツルールを有効にすることができます。
2.1.1. ルールの適用時 リンクのコピーリンクがクリップボードにコピーされました!
ルールは、コンテンツが Apicurio Registry に追加された場合のみ、適用されます。これには、以下の REST 操作が含まれます。
- アーティファクトの追加
- アーティファクトの更新
- アーティファクトバージョンの追加
ルールに違反した場合、Apicurio Registry は HTTP エラーを返します。応答本文には、違反したルールと、何が問題だったのかを示すメッセージが含まれます。
2.1.2. ルールの優先順位 リンクのコピーリンクがクリップボードにコピーされました!
グローバルレベルおよびアーティファクトレベルで Apicurio Registry コンテンツルールを設定できます。優先順位は次のとおりです。
- Artifact ルールと同等のグローバルルールを有効にすると、Artifact ルールがグローバルルールをオーバーライドします。
- Artifact ルールを無効にして、同等のグローバルルールを有効にすると、グローバルルールが適用されます。
- アーティファクトレベルおよびグローバルレベルでルールを無効にすると、すべてのアーティファクトのルールが無効になります。
-
アーティファクトレベルでルール値を
NONEに設定すると、有効なグローバルルールがオーバーライドされます。この場合、アーティファクトルール値NONEがこのアーティファクトでは優先されますが、有効なグローバルルールは、ルールがアーティファクトレベルで無効になっている他のすべてのアーティファクトに引き続き適用されます。
2.1.3. ルールの仕組み リンクのコピーリンクがクリップボードにコピーされました!
各ルールには、名前と設定情報があります。Apicurio Registry は、各アーティファクトのルールのリストとグローバルルールのリストを維持します。リスト内の各ルールは、ルール実装の名前と設定で構成されます。
アーティファクトの現在のバージョン (存在する場合) および追加されるアーティファクトの新しいバージョンのコンテンツを含むルールが提供されます。ルール実装は、アーティファクトがルールを渡すかどうかに応じて true または false を返します。そうでない場合、Apicurio Registry は HTTP エラー応答で理由を報告します。一部のルールは、コンテンツの以前のバージョンを使用しない場合があります。たとえば、互換性ルールは以前のバージョンを使用しますが、構文またはセマンティック妥当性ルールは使用しません。
2.1.4. コンテンツルールの設定 リンクのコピーリンクがクリップボードにコピーされました!
アーティファクトごとに個別にルールを設定することも、グローバルに設定することもできます。Apicurio Registry は、特定のアーティファクト用に設定されたルールを適用します。そのレベルでルールが設定されていない場合、Apicurio Registry はグローバルに設定されたルールを適用します。グローバルルールが設定されていない場合は、ルールが適用されません。
アーティファクトルールの設定
Apicurio Registry Web コンソールまたは REST API を使用してアーティファクトルールを設定できます。詳細は以下を参照してください。
グローバルルールの設定
グローバルルールは、複数の方法で設定できます。
-
REST API で
/rules操作を使用します - Apicurio Registry Web コンソールを使用する
- Apicurio Registry アプリケーションプロパティーを使用してデフォルトのグローバルルールを設定する
デフォルトのグローバルルールの設定
アプリケーションレベルで Apicurio Registry を設定して、グローバルルールを有効または無効にすることができます。以下のアプリケーションプロパティー形式を使用して、インストール後の設定を行わずに、インストール時にデフォルトのグローバルルールを設定できます。
registry.rules.global.<ruleName>
registry.rules.global.<ruleName>
現在、以下のルール名がサポートされています。
-
compatibility -
validity
application プロパティーの値は、設定されたルールに固有の有効な設定オプションである必要があります。
これらのアプリケーションプロパティーは、Java システムプロパティーとして設定することも、Quarkus application.properties ファイルに含めることもできます。詳細は、Quarkus のドキュメント を参照してください。