4.3. Service Registry REST API コマンドを使用したアーティファクト参照の管理
Apache Avro、Protobuf、JSON スキーマなどの Service Registry アーティファクトタイプには、あるアーティファクトファイルから別のアーティファクトファイルへの アーティファクト参照 を含めることができます。再利用可能なスキーマと API アーティファクトを定義し、それらを複数の場所から参照することで、効率を高めることができます。
このセクションでは、Service Registry コア REST API を使用して、Service Registry の単純な Avro スキーマアーティファクトへのアーティファクト参照を追加および取得する簡単な curl ベースの例を示します。
この例では、最初に ItemId
という名前のスキーマアーティファクトを作成します。
ItemId スキーマ
{ "namespace":"com.example.common", "name":"ItemId", "type":"record", "fields":[ { "name":"id", "type":"int" } ] }
次に、この例では、ネストされた ItemId
アーティファクトへの参照を含む、Item
という名前のスキーマアーティファクトを作成します。
ネストされた ItemId スキーマを持つアイテムスキーマ
{ "namespace":"com.example.common", "name":"Item", "type":"record", "fields":[ { "name":"itemId", "type":"com.example.common.ItemId" }, ] }
前提条件
- Service Registry が環境にインストールされ、実行している
手順
/groups/{group}/artifacts
オペレーションを使用して、ネストされたアーティファクト参照を作成するItemId
スキーマアーティファクトを追加します。$ curl -X POST MY-REGISTRY-URL/apis/registry/v2/groups/my-group/artifacts \ -H "Content-Type: application/json; artifactType=AVRO" \ -H "X-Registry-ArtifactId: ItemId" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ --data '{"namespace": "com.example.common", "type": "record", "name": "ItemId", "fields":[{"name":"id", "type":"int"}]}'
-
この例では、
ItemId
のアーティファクト ID を持つ Avro スキーマ アーティファクトを追加します。一意のアーティファクト ID を指定しない場合、Service Registry は UUID として自動的に生成します。 -
MY-REGISTRY-URL
は、Service Registry がデプロイされているホスト名です。例:my-cluster-service-registry-myproject.example.com
。 -
この例では、API パスで
my-group
のグループ ID を指定します。一意のグループ ID を指定しない場合は、API パスで../groups/default
を指定する必要があります。
-
この例では、
応答に、アーティファクトが追加されたことを確認するために、想定される JSON ボディーが含まれていることを確認します。以下に例を示します。
{"name":"ItemId","createdBy":"","createdOn":"2022-04-14T10:50:09+0000","modifiedBy":"","modifiedOn":"2022-04-14T10:50:09+0000","id":"ItemId","version":"1","type":"AVRO","globalId":1,"state":"ENABLED","groupId":"my-group","contentId":1,"references":[]}
/groups/{group}/artifacts
操作を使用して、ItemId
スキーマへのアーティファクト参照を含むアイテム
スキーマアーティファクトを追加します。$ curl -X POST MY-REGISTRY-URL/apis/registry/v2/groups/my-group/artifacts \ -H 'Content-Type: application/create.extended+json' \ -H "X-Registry-ArtifactId: Item" \ -H 'X-Registry-ArtifactType: AVRO' \ -H "Authorization: Bearer $ACCESS_TOKEN" \ --data-raw '{ "content": "{\r\n \"namespace\":\"com.example.common\",\r\n \"name\":\"Item\",\r\n \"type\":\"record\",\r\n \"fields\":[\r\n {\r\n \"name\":\"itemId\",\r\n \"type\":\"com.example.common.ItemId\"\r\n }\r\n ]\r\n}", "references": [ { "groupId": "my-group", "artifactId": "ItemId", "name": "com.example.common.ItemId", "version": "1" } ] }'
-
アーティファクト参照の場合には、
application/json
コンテンツタイプを拡張するapplication/create.extended+json
のカスタムコンテンツタイプを指定する必要があります。
-
アーティファクト参照の場合には、
アーティファクトが参照を使用して作成されたことを確認するために、予期される JSON 本文が応答に含まれていることを確認します。以下に例を示します。
{"name":"Item","createdBy":"","createdOn":"2022-04-14T11:52:15+0000","modifiedBy":"","modifiedOn":"2022-04-14T11:52:15+0000","id":"Item","version":"1","type":"AVRO","globalId":2,"state":"ENABLED","groupId":"my-group","contentId":2,"references":[1]}
参照を含むアーティファクトのグローバル ID を指定して、Service Registry からアーティファクト参照を取得します。この例では、指定されたグローバル ID は
2
です。$ curl MY-REGISTRY-URL/apis/registry/v2/ids/globalIds/2/references
応答に、このアーティファクト参照に必要とされる JSON 本文が含まれていることを確認してください。以下に例を示します。
[{"groupId":"my-group","artifactId":"ItemId","version":"1","name":"com.example.common.ItemId"}]
関連情報
- 詳細は、Apicurio Registry REST API のドキュメント を参照してください。