4.3. Service Registry REST API 명령을 사용하여 스키마 및 API 아티팩트 참조 관리
일부 Service Registry 아티팩트 유형에는 한 아티팩트 파일에서 다른 아티팩트 파일로의 아티팩트 참조 가 포함될 수 있습니다. 재사용 가능한 스키마 또는 API 아티팩트를 정의한 다음 아티팩트 참조의 여러 위치에서 참조할 수 있습니다.
다음 아티팩트 유형은 아티팩트 참조를 지원합니다.
- Apache Avro
- Google Protobuf
- JSON 스키마
- OpenAPI
- AsyncAPI
이 섹션에서는 Core Registry API v2를 사용하여 서비스 레지스트리의 간단한 Avro 스키마 아티팩트에 대한 아티팩트 참조를 추가하고 검색하는 간단한 curl 기반 예제를 보여줍니다.
이 예제에서는 먼저 ItemId
라는 스키마 아티팩트를 생성합니다.
ItemId 스키마
{ "namespace":"com.example.common", "name":"ItemId", "type":"record", "fields":[ { "name":"id", "type":"int" } ] }
이 예제에서는 Item
이라는 스키마 아티팩트를 생성합니다. 이 아티팩트는 중첩된 ItemId
아티팩트에 대한 참조를 포함합니다.
중첩된 ItemId 스키마가 있는 항목 스키마
{ "namespace":"com.example.common", "name":"Item", "type":"record", "fields":[ { "name":"itemId", "type":"com.example.common.ItemId" }, ] }
사전 요구 사항
- 사용자 환경에 서비스 레지스트리가 설치되어 실행 중입니다.
프로세스
/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를 지정하지 않으면 서비스 레지스트리는 UUID로 자동으로 생성됩니다. -
MY-REGISTRY-URL
은 서비스 레지스트리가 배포된 호스트 이름입니다. 예: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
작업을 사용하여Item
Id$ 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":[{"artifactId":"ItemId","groupId":"my-group","name":"ItemId","version":"1"}] }
참조가 포함된 아티팩트의 글로벌 ID를 지정하여 서비스 레지스트리에서 아티팩트 참조를 검색합니다. 이 예에서 지정된 전역 ID는
2
입니다.$ curl -H "Authorization: Bearer $ACCESS_TOKEN" 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 설명서를 참조하십시오.
- 아티팩트 참조의 자세한 예는 8장. Java 클라이언트에서 Kafka serializers/deserializers 구성 에서 각 아티팩트 유형 구성 섹션을 참조하십시오.