4.2. 使用 Apicurio Registry REST API 命令管理 schema 和 API 工件版本


如果您在使用 Core Registry API v2 添加 schema 和 API 工件时没有指定工件版本,Apicurio Registry 会自动生成一个版本。创建新工件时的默认版本是 1

Apicurio Registry 还支持自定义版本控制,您可以在其中将 X-Registry-Version HTTP 请求标头用作字符串来指定版本。指定自定义版本值将覆盖创建或更新工件时通常分配的默认版本。然后,在执行需要版本的 REST API 操作时,您可以使用此版本值。

本节展示了一个简单的基于 curl 的示例,它使用 Core Registry API v2 在 Apicurio Registry 中添加和检索自定义 Apache Avro 模式版本。您可以指定自定义版本来添加或更新工件,或添加工件版本。

前提条件

  • Apicurio Registry 已安装并在您的环境中运行。

流程

  1. 使用 /groups/{group}/artifacts 操作在注册表中添加工件版本。以下示例 curl 命令为共享价格应用程序添加简单的工件:

    $ curl -X POST -H "Content-Type: application/json; artifactType=AVRO" \
      -H "X-Registry-ArtifactId: my-share-price" -H "X-Registry-Version: 1.1.1" \
      -H "Authorization: Bearer $ACCESS_TOKEN" \
      --data '{"type":"record","name":" p","namespace":"com.example", \
       "fields":[{"name":"symbol","type":"string"},{"name":"price","type":"string"}]}' \
       MY-REGISTRY-URL/apis/registry/v2/groups/my-group/artifacts
    Copy to Clipboard Toggle word wrap
    • 这个示例添加了一个 Avro schema 工件,其工件 ID 为 my-share-price1.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
  2. 验证响应是否包含预期的 JSON 正文,以确认是否添加了自定义工件版本。例如:

    {"createdBy":"","createdOn":"2021-04-16T10:51:43+0000","modifiedBy":"",
    "modifiedOn":"2021-04-16T10:51:43+0000","id":"my-share-price","version":"1.1.1",
    "type":"AVRO","globalId":3,"state":"ENABLED","groupId":"my-group","contentId":3}
    Copy to Clipboard Toggle word wrap
    • 在添加工件时,指定了自定义 1.1.1 版本。
    • 这是添加到 registry 中的第三个工件,因此全局 ID 和内容 ID 的值为 3
  3. 使用 API 路径中的工件 ID 和版本从 registry 检索工件内容。在这个示例中,指定的 ID 是 my-share-price,版本是 1.1.1

    $ curl -H "Authorization: Bearer $ACCESS_TOKEN" \
    MY-REGISTRY-URL/apis/registry/v2/groups/my-group/artifacts/my-share-price/versions/1.1.1
    {"type":"record","name":"price","namespace":"com.example",
      "fields":[{"name":"symbol","type":"string"},{"name":"price","type":"string"}]}
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat