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"
        },
    ]
}

사전 요구 사항

  • 사용자 환경에 서비스 레지스트리가 설치되어 실행 중입니다.

프로세스

  1. /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 를 지정해야 합니다.
  2. 응답에 아티팩트가 추가되었는지 확인하는 예상 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":[]}
  3. /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 의 사용자 정의 콘텐츠 유형을 지정해야 합니다.
  4. 응답에 참조로 아티팩트가 생성되었는지 확인하는 예상 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"}] }
  5. 참조가 포함된 아티팩트의 글로벌 ID를 지정하여 서비스 레지스트리에서 아티팩트 참조를 검색합니다. 이 예에서 지정된 전역 ID는 2 입니다.

    $ curl -H "Authorization: Bearer $ACCESS_TOKEN" MY-REGISTRY-URL/apis/registry/v2/ids/globalIds/2/references
  6. 응답에 이 아티팩트 참조에 예상되는 JSON 본문이 포함되어 있는지 확인합니다. 예를 들면 다음과 같습니다.

    [{"groupId":"my-group","artifactId":"ItemId","version":"1","name":"com.example.common.ItemId"}]

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.