AIP GET 是否需要有请求消息

问题描述

阅读 AIP Get 的文档时会感到困惑。 https://google.aip.dev/131 首先,他们没有定义所使用的动词是什么意思。 “必须”、“应该”、“可以”等是什么意思。通常,他们没有指定是否需要请求消息,但他们声明“URI 应包含与资源名称对应的单个变量字段”。这是否意味着拥有一个变量只是一个建议?并且您可以在没有变量的情况下使用 GET 吗?其次,如果它暗示这是一个建议,是否意味着它允许您可以拥有一个带有空参数 google.protobuf.Empty 的 GET 方法 API? 我们的用例是 API 的参数是当前用户,我们将从服务上下文中获取,而不必将其添加为参数。

解决方法

  1. MUST 这个词,或者术语“REQUIRED”或“SHALL”,意味着 定义是规范的绝对要求。

  2. MUST NOT 这个短语,或短语“SHALL NOT”,意味着 定义是对规范的绝对禁止。

  3. 应该这个词,或者形容词“推荐”,意思是有 在特定情况下可能存在正当理由忽略一个 特定项目,但必须理解其全部含义并 在选择不同的课程之前仔细权衡。

  4. SHOULD NOT 这个短语,或者短语“NOT RECOMMENDED”的意思是 在特定情况下可能存在正当理由 特定的行为是可以接受的,甚至是有用的,但完整的 应该理解影响并仔细权衡案件 在实施此标签描述的任何行为之前。

  5. MAY 这个词,或形容词“可选”,表示一个项目是 真正可选。一个供应商可能会选择包括该项目,因为 特定市场需要它或因为供应商认为 它增强了产品,而另一个供应商可能会省略相同的项目。 不包含特定选项的实现必须是 准备与另一个实现互操作 包括该选项,尽管功能可能有所减少。在里面 同样的一个实现,它确实包含一个特定的选项 必须准备好与另一个实现互操作 不包括该选项(当然,对于该功能, 选项提供。)

所以所有包含“必须”的语句都是强制性的,其他的则不是。