第 4 章 使用 REST API 管理 Apicurio Registry 内容
客户端应用程序可以使用 Registry REST API 操作来管理 Apicurio Registry 中的 schema 和 API 工件,例如在生产环境中部署的 CI/CD 管道。Registry REST API 为存储在 registry 中的工件、版本、元数据和规则提供创建、读取、更新和删除操作。如需更多信息,请参阅 Apicurio Registry REST API 文档。
本章论述了 Apicurio Registry 核心 REST API,并演示了如何使用它来管理 registry 中存储的架构和 API 工件:
4.1. 使用 Registry REST API 命令管理 schema 和 API 工件 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
本节演示了一个简单的基于 curl 的示例,它使用了 registry v2 核心 REST API 在 registry 中添加并检索 Apache Avro schema 工件。
前提条件
- 必须在自己的环境中安装并运行 Apicurio Registry。
流程
使用
/groups/{group}/artifacts操作向注册表添加工件。以下示例curl命令为共享价格应用程序添加简单的工件:curl -X POST -H "Content-type: application/json; artifactType=AVRO" \ -H "X-Registry-ArtifactId: share-price" \ --data '{"type":"record","name":"price","namespace":"com.example", \ "fields":[{"name":"symbol","type":"string"},{"name":"price","type":"string"}]}' \ http://MY-REGISTRY-HOST/apis/registry/v2/groups/my-group/artifacts$ curl -X POST -H "Content-type: application/json; artifactType=AVRO" \ -H "X-Registry-ArtifactId: share-price" \1 --data '{"type":"record","name":"price","namespace":"com.example", \ "fields":[{"name":"symbol","type":"string"},{"name":"price","type":"string"}]}' \2 http://MY-REGISTRY-HOST/apis/registry/v2/groups/my-group/artifacts3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证响应是否包含预期的 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}{"createdBy":"","createdOn":"2021-04-16T09:07:51+0000","modifiedBy":"", "modifiedOn":"2021-04-16T09:07:51+0000","id":"share-price","version":"1",1 "type":"AVRO","globalId":2,"state":"ENABLED","groupId":"my-group","contentId":2}2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 API 路径中的工件 ID,从 registry 检索工件内容。在这个示例中,指定的 ID 是
share-price:curl http://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"}]}$ curl http://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"}]}Copy to Clipboard Copied! Toggle word wrap Toggle overflow