4장. REST API를 사용하여 서비스 레지스트리 콘텐츠 관리
클라이언트 애플리케이션은 Service Registry REST API 작업을 사용하여 서비스 레지스트리의 스키마 및 API 아티팩트(예: 프로덕션에 배포된 CI/CD 파이프라인)를 관리할 수 있습니다. Core Registry API v2는 Service Registry에 저장된 아티팩트, 버전, 메타데이터 및 규칙에 대한 작업을 제공합니다. 자세한 내용은 Apicurio Registry REST API 설명서를 참조하십시오.
이 장에서는 Core Registry API v2를 사용하여 다음 작업을 수행하는 방법의 예를 보여줍니다.
사전 요구 사항
추가 리소스
4.1. 서비스 레지스트리 REST API 명령을 사용하여 스키마 및 API 아티팩트 관리
이 섹션에서는 Core Registry API v2를 사용하여 서비스 레지스트리에서 간단한 스키마 아티팩트를 추가하고 검색하는 간단한 curl 기반 예제를 보여줍니다.
사전 요구 사항
- 사용자 환경에 서비스 레지스트리가 설치되어 실행 중입니다.
프로세스
/groups/{group}/artifacts
작업을 사용하여 서비스 레지스트리에 아티팩트를 추가합니다. 다음 예제curl
명령은 공유 가격 애플리케이션에 대한 간단한 스키마 아티팩트를 추가합니다.$ curl -X POST -H "Content-Type: application/json; artifactType=AVRO" \ -H "X-Registry-ArtifactId: share-price" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ --data '{"type":"record","name":"price","namespace":"com.example", \ "fields":[{"name":"symbol","type":"string"},{"name":"price","type":"string"}]}' \ MY-REGISTRY-URL/apis/registry/v2/groups/my-group/artifacts
-
이 예제에서는
공유 가격
의 아티팩트 ID를 사용하여 Apache Avro 스키마 아티팩트를 추가합니다. 고유한 아티팩트 ID를 지정하지 않으면 서비스 레지스트리는 UUID로 자동으로 생성됩니다. -
MY-REGISTRY-URL
은 서비스 레지스트리가 배포된 호스트 이름입니다. 예:my-cluster-service-registry-myproject.example.com
. -
이 예제에서는 API 경로에
my-group
의 그룹 ID를 지정합니다. 고유한 그룹 ID를 지정하지 않으면 API 경로에../groups/default
를 지정해야 합니다.
-
이 예제에서는
응답에 아티팩트가 추가되었는지 확인하는 예상 JSON 본문이 포함되어 있는지 확인합니다. 예를 들면 다음과 같습니다.
{"createdBy":"","createdOn":"2021-04-16T09:07:51+0000","modifiedBy":"", "modifiedOn":"2021-04-16T09:07:51+0000","id":"share-price","version":"1", "type":"AVRO","globalId":2,"state":"ENABLED","groupId":"my-group","contentId":2}
-
아티팩트를 추가할 때 버전이 지정되지 않았으므로 기본 버전
1
이 자동으로 생성됩니다. -
이는 Service Registry에 추가된 두 번째 아티팩트이므로 글로벌 ID 및 콘텐츠 ID의 값은
2
입니다.
-
아티팩트를 추가할 때 버전이 지정되지 않았으므로 기본 버전
API 경로에 아티팩트 ID를 사용하여 서비스 레지스트리에서 아티팩트 콘텐츠를 검색합니다. 이 예에서 지정된 ID는
공유 가격입니다
.$ curl -H "Authorization: Bearer $ACCESS_TOKEN" \ MY-REGISTRY-URL/apis/registry/v2/groups/my-group/artifacts/share-price {"type":"record","name":"price","namespace":"com.example", "fields":[{"name":"symbol","type":"string"},{"name":"price","type":"string"}]}
추가 리소스