4.2. 使用 Apicurio Registry REST API 命令管理 schema 和 API 工件版本
如果您在使用 Core Registry API v3 添加 schema 和 API 工件时没有指定工件版本号,则 Apicurio Registry 会自动生成版本号。创建新工件时的默认版本为 1
。
Apicurio Registry 还支持自定义版本控制,您可以在创建工件或工件版本时指定版本号。指定自定义 version 值会覆盖在创建工件或工件版本时通常会分配的默认版本。然后,您可以在执行需要版本号的 REST API 操作时使用此版本值。
本节展示了一个简单的基于 curl 的示例,它使用 Core Registry API v3 在 Apicurio Registry 中添加和检索自定义 Apache Avro 模式版本。您可以指定自定义版本号来创建工件,或添加工件版本。
先决条件
- Apicurio Registry 在您的环境中安装并运行。
流程
使用
/groups/{groupId}/artifacts
操作在 registry 中添加工件版本。以下示例curl
命令为共享价格应用程序添加一个简单的工件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
这个示例添加了一个 Avro 模式工件,工件 ID 为
my-share-price
和1.1.1
版本。如果没有指定版本,Apicurio Registry 会自动生成默认版本1
。 -
MY-REGISTRY-URL
是在其上部署 Apicurio Registry 的主机名。例如:my-cluster-service-registry-myproject.example.com
。 -
本例在 API 路径中指定
my-group
的组 ID。如果没有指定唯一的组 ID,则必须在 API 路径中指定../groups/default
。
-
这个示例添加了一个 Avro 模式工件,工件 ID 为
验证响应是否包含预期的 JSON 正文,以确认是否添加了自定义工件版本。例如:
{"artifact":{"owner":"","createdOn":"2024-09-26T17:06:21Z","modifiedBy":"","modifiedOn":"2024-09-26T17:06:21Z","artifactType":"AVRO","groupId":"my-group","artifactId":"my-share-price"},"version":{"version":"1.1.1","owner":"","createdOn":"2024-09-26T17:06:21Z","artifactType":"AVRO","globalId":4,"state":"ENABLED","groupId":"my-group","contentId":4,"artifactId":"my-share-price"}}
{"artifact":{"owner":"","createdOn":"2024-09-26T17:06:21Z","modifiedBy":"","modifiedOn":"2024-09-26T17:06:21Z","artifactType":"AVRO","groupId":"my-group","artifactId":"my-share-price"},"version":{"version":"1.1.1","owner":"","createdOn":"2024-09-26T17:06:21Z","artifactType":"AVRO","globalId":4,"state":"ENABLED","groupId":"my-group","contentId":4,"artifactId":"my-share-price"}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在添加工件时,指定了
1.1.1
的自定义版本。 -
这是添加到注册表中的第四个构件,因此全局 ID 和内容 ID 的值为
4
。
-
在添加工件时,指定了
使用 API 路径中的工件 ID 和版本从 registry 检索工件内容。在本例中,指定的 ID 是
my-share-price
,版本是1.1.1
:curl -H "Authorization: Bearer $ACCESS_TOKEN" \ MY-REGISTRY-URL/apis/registry/v3/groups/my-group/artifacts/my-share-price/versions/1.1.1/content
$ curl -H "Authorization: Bearer $ACCESS_TOKEN" \ MY-REGISTRY-URL/apis/registry/v3/groups/my-group/artifacts/my-share-price/versions/1.1.1/content {"type":"record","name":"price","namespace":"com.example", "fields":[{"name":"symbol","type":"string"},{"name":"price","type":"string"}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow