当前位置: 首页 > news >正文

AIP-215 API特定proto

编号215
原文链接AIP-215: API-specific protos
状态批准
创建日期2018-10-01
更新日期2018-10-01

API通常使用API特定proto定义,偶尔依赖通用组件。保持API相互隔离可以避免版本问题和客户端库打包问题。

指南

  • 所有特定于某个API的protos 必须 位于带有主版本号的包中(例如 google.library.v1 )。
  • 对其他API中资源的引用 必须 通过资源名字(AIP-122)表达,而非使用资源消息。
  • 如果API的两个版本实际上使用相同的(API特定)proto,这个proto 必须 每个版本中独立定义。(换句话说,API 不得 创建自己的“API特定通用组件”包。)
  • 组织特定通用组件 可以 放在一个通用包中,如AIP-213所述,但 不得 被该组织外的任何API使用。
  • 全局通用组件(一如AIP-213所述) 可以 被任何API自由使用。

理由

如果一个API依赖于另一个API定义的protos,这会引发客户预期行为和客户端库依赖管理的不确定性。假设 google.cloud.library.v1 依赖于 google.cloud.movies.v2 中的protos(而非抽象资源)。对 google.cloud.movies.v2 的任何更改都可能产生问题。

例如:

  • 如果向 google.cloud.movies.v2 中的消息添加了一个域,使用 google.cloud.library.v1 的客户是否应该能够看到它?如果是,应该在域添加后的多久之后看到?其他API更改呢?
  • 如果整个主版本 google.cloud.movies.v2 废弃了(通常在v3发布后),这是否意味着 google.cloud.library.v1 必须更改为使用 google.cloud.movies.v3 ?如果是,需要为库API发布一个新的主版本吗?
  • 客户端库版本管理应该如何反映所依赖API的变更?

保持API相互隔离,并按照高度的纪律性维护一组有限的通用组件,可以减少许多依赖问题。

如果在多个版本之间共享API特定通用组件,会增加生成和打包客户端库的复杂性,在版本管理上也缺乏灵活性。

如果多个主版本初始包含同一个proto的副本,每个proto副本都可以随版本演进,因为它们相互独立。

修订记录

  • 2023-06-27 重构了AIP 215和213,提升清晰度。
  • 2023-05-11 将“PA”改为“组织”。
  • 2018-10-01 初稿。

相关文章:

  • 【MySQL基础】MySQL内连接(INNER JOIN)详解:高效关联查询的基础
  • 数字人:从科幻走向现实的未来(1/10)
  • 11-产品经理-创建产品
  • ProfibusDP(主站)如何转Profinet
  • 【图像处理基石】什么是自动曝光(AE)?
  • AtCoder Beginner Contest 400(ABCDE)
  • 虚拟机安装遇到的问题如:Exception 0xc0000005
  • 通俗地讲述DDD的设计
  • SQL注入-盲注靶场实战(手写盲注payload)--SRC获得库名即可
  • 投资策略分析:十年年化32.2%,夏普比1.31的动量斜率策略(策略源码+数据下载)
  • LearnOpenGL-笔记-其九
  • RocketMQ 01
  • 实际犯错以及复盘1
  • FPGA同步复位、异步复位、异步复位同步释放仿真
  • GPMI:一线通联,创新无界
  • 2025-04-06 NO.2 Quest3 基础配置与打包
  • 【AI论文】重新思考视觉语言模型的强化学习扩展:一个透明的、从头开始的框架和全面的评估方案
  • 内存池整体框架设计
  • 网络安全应急响应-系统排查
  • Go语言-初学者日记(三):函数与方法
  • 仿站小工具 wordpress/网站制作流程图
  • 中国做的最好的网站/seo视频
  • 图书馆网站制作/seo原创工具
  • 天河区营销型网站建设/手机百度高级搜索入口
  • 快盘WordPress/seo是如何优化
  • 特种作业操作证查询网官网/seo如何优化的