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

AIP-192 文档

编号192
原文链接AIP-192: Documentation
状态批准
创建日期2019-07-25
更新日期2019-07-25

文档是API设计中最关键的方面之一。API用户无法深入到实现细节去更好地理解API。通常,API界面定义和相关文档是用户仅有的东西。因此文档必须尽量清晰、完整、明确。

指南

使用protocol buffer定义的API, 必须 在每个组件(服务、方法、消息、域、枚举和枚举值)中包含符合protocol buffer格式的公开注释。即使一些注释简短又乏味,也很重要,因为许多工具会读取和使用注释。

特别对于服务, 应当 存在描述性注释,解释服务是什么,以及用户可以拿来做什么。

注意 许多读者可能不是以英语为母语的人。注释 应当 避免使用行业惯用语、俚语、复杂隐喻、流行文化引用,或其他难以翻译的内容。此外,许多读者存在不同的背景和视角;在编写涉及人物的示例时,注释 应当 使用无争议的、非健在的人物。

样式

注释 应当 使用语法正确的美式英语。每个注释的第一句 应当 省略主语,使用第三人称现在时:

// Creates a book under the given publisher.
rpc CreateBook(CreateBookRequest) returns (Book) {
  option (google.api.http) = {
    post: "/v1/{parent=publishers/*}/books"
    body: "book"
  };
}

描述

消息和域的描述 应当 简洁而完整。有时注释可以非常简单,如果确实没有太多东西可说。然而在得出这个结论之前,考虑是否涉及以下问题:

  • 它是什么?
  • 如何使用它?
  • 成功时它会做什么?失败时呢?
  • 它是幂等的吗?
  • 单位是什么?(例如:米、度、像素)
  • 有什么副作用?
  • 有哪些可能导致失败的常见错误?
    • 要求的输入格式是什么?
    • 接受的值的范围是什么?(例如 [0.0, 1.0) , [1, 10] )
      • 范围边界是包含还是排除?
    • 对于字符串,最小和最大长度是多少,允许哪些字符?
      • 如果超过最大长度,是截断还是返回错误?
  • 它总是存在的吗?(例如:“投票信息容器仅在记录投票信息时存在。”)
  • 它有默认设置吗?(例如:“如果省略 page_size ,则默认为50。”)

格式化

注释中的任何带有格式的内容 必须 使用CommonMark。 不得 使用标题和表格,它们会导致多个工具出现问题,也不适合客户端库参考文档。

注释 应当 使用 代码字体 表示域或方法名字以及字面值(如 true )。

不得 使用原始HTML。

不得 使用“ASCII art”在协议中展示图表。很多渲染器会使用协议中的Markdown,ASCII art不太可能被所有渲染器正确展示。如果图表有助于理解API,请包含链接指向一个文档页,在文档页中展示图表。

交叉引用

注释可以使用Markdown参考链接“链接”到另一个组件(服务、方法、消息、域、枚举或枚举值)。参考 必须 是以下形式之一:

  • 元素的完全限定名,例如 [Book][google.example.v1.Book]
  • 相对范围引用,例如 [科幻类型][Genre.GENRE_SCI_FI]
  • 隐含引用,例如 [Book][] 等同于 [Book][Book]

这些引用按照名字解析规则解析。

不得 在引用中包含域名字。域名字无法解析, 必须 引用原始定义。例如 [author][Book.author.family_name] ,其中 author 是 Book 中的域,无法解析,但 [author][Author.family_name] 可以解析。

外部链接

注释 可以 链接到外部页面,提供比注释更多的背景信息。外部链接 必须 使用绝对(而非相对)URL,包括协议(通常是 https ),并且 不应 假定文档位于某个特定主机上。例如: [Spanner文档](https://cloud.google.com/spanner/docs)

商标名

在注释中引用公司或产品的正确商标名时, 不应 使用缩写。缩写是主流口语用法、非缩写可能产生困惑的除外(例如:IBM)。

注释中商标名的拼写和大小写 应当 与商标所有者当前品牌一致。

废弃

废弃组件(服务、方法、消息、域、枚举或枚举值)时, 必须 将 deprecated 选项设为 true ,相应注释的第一行 必须 以 "Deprecated: " 开头,并为开发者提供替代方案。如果没有替代方案, 必须 给出废弃原因。

内部注释

注释 可以 标记为内部,方法是将内容包围在 (-- 和 --) 中。

非公开链接、内部实现备注(如 TODO 和 FIXME 指令)以及其他此类材料 必须 标记为内部。

注意 应当 仅使用前导注释(而非尾注释或分离注释)。特别的,*不得* 同时使用前导和尾注释来描述组件,这是无意中遗漏内部内容的常见原因。

修订记录

  • 2024-10-29 包含交叉引用解析规则。
  • 2023-08-11 扩展弃用注释要求到所有组件。
  • 2021-04-20 添加弃用服务和远程过程调用指南。
  • 2020-04-01 添加要求外部链接使用绝对URL的指南。
  • 2020-02-14 添加关于使用商标名的指南。
  • 2019-09-23 添加关于不使用前导和尾注释的指南。
  • 2019-08-01 将示例从“书架”更改为“出版商”,更好的展示资源所有权。

http://www.kler.cn/a/611795.html

相关文章:

  • Manus的开源替代者之一:OpenManus通用AI智能体框架解析及产品试用
  • JBDev - Theos下一代越狱开发工具
  • 【C++ 继承】—— 青花分水、和而不同,继承中的“明明德”与“止于至善”
  • 神经网络基础(NN)
  • 基于云服务器的数仓搭建-集群安装
  • Pytorch学习笔记(十二)Learning PyTorch - NLP from Scratch
  • 禅道后台命令执行漏洞
  • 数位和相等
  • 【一起来学kubernetes】24、Service使用详解
  • 进程通信 system V共享内存 ─── linux第25课
  • 【漏洞修复】Android 10 系统源码中的 glibc、curl、openssl、cups、zlib 更新到最新版本
  • ECharts各类炫酷图表/3D柱形图
  • HTML之内联样式
  • 用WSL安装Ubuntu(Windows11)
  • 计算机二级(C语言)考试高频考点总汇(三)—— 结构体和共用体、结构体对齐规则、联合体大小计算
  • 力扣DAY29 | 热100 | 删除链表的倒数第N个结点
  • JumpServer:一款企业级开源堡垒机
  • Spring:Bean的作用域、循环依赖和事务
  • Docker-清理容器空间prune
  • 【sql优化】where 1=1