4.3. 使用 Service Registry REST API 命令管理工件引用
服务 Registry 工件类型,如 Apache Avro、Protobuf 和 JSON Schema 可以包括从一个 工件文件到另一个工件文件中的工件引用。您可以通过定义可重复使用的模式和 API 工件来创建效率,然后从多个位置引用它们。
本节演示了一个简单的基于 curl 的示例,它使用了 Service Registry 核心 REST API 来添加和检索到 Service Registry 中简单 Avro 模式工件的工件引用。
这个示例首先创建一个名为 ItemId
的 schema 工件:
ItemId 模式
然后,创建名为 Item
的 schema 构件,其中包含对嵌套 ItemId
构件的引用。
项 schema 带有嵌套的 ItemId 模式
前提条件
- Service Registry 在您的环境中安装并运行
流程
添加您要创建嵌套工件引用的
ItemId
模式工件,以使用/groups/{group}/artifacts
操作: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"}]}'
$ 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"}]}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
这个示例添加了一个 Avro schema 工件,其工件 ID 为
ItemId
。如果没有指定唯一的工件 ID,Service Registry 会自动生成一个作为 UUID。 -
MY-REGISTRY-URL
是在其上部署 Service Registry 的主机名。例如:my-cluster-service-registry-myproject.example.com
。 -
本例在 API 路径中指定
my-group
的组 ID。如果没有指定唯一组 ID,则必须在 API 路径中指定./groups/default
。
-
这个示例添加了一个 Avro schema 工件,其工件 ID 为
验证响应是否包含预期的 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":[]}
{"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":[]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
/groups/{group}/artifacts
操作添加包含对Item
IdCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
对于工件引用,您必须指定自定义内容类型
application/create.extended+json
,这会扩展application/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]}
{"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]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过指定包含引用的工件的工件 ID,从 Service Registry 检索工件引用。在本例中,指定的全局 ID 是
2:
curl MY-REGISTRY-URL/apis/registry/v2/ids/globalIds/2/references
$ curl MY-REGISTRY-URL/apis/registry/v2/ids/globalIds/2/references
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证响应是否包含此工件引用的预期的 JSON 正文。例如:
[{"groupId":"my-group","artifactId":"ItemId","version":"1","name":"com.example.common.ItemId"}]
[{"groupId":"my-group","artifactId":"ItemId","version":"1","name":"com.example.common.ItemId"}]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow