问题描述
阅读 AIP Get 的文档时会感到困惑。 https://google.aip.dev/131 首先,他们没有定义所使用的动词是什么意思。 “必须”、“应该”、“可以”等是什么意思。通常,他们没有指定是否需要请求消息,但他们声明“URI 应包含与资源名称对应的单个变量字段”。这是否意味着拥有一个变量只是一个建议?并且您可以在没有变量的情况下使用 GET 吗?其次,如果它暗示这是一个建议,是否意味着它允许您可以拥有一个带有空参数 google.protobuf.Empty
的 GET 方法 API?
我们的用例是 API 的参数是当前用户,我们将从服务上下文中获取,而不必将其添加为参数。
解决方法
-
MUST 这个词,或者术语“REQUIRED”或“SHALL”,意味着 定义是规范的绝对要求。
-
MUST NOT 这个短语,或短语“SHALL NOT”,意味着 定义是对规范的绝对禁止。
-
应该这个词,或者形容词“推荐”,意思是有 在特定情况下可能存在正当理由忽略一个 特定项目,但必须理解其全部含义并 在选择不同的课程之前仔细权衡。
-
SHOULD NOT 这个短语,或者短语“NOT RECOMMENDED”的意思是 在特定情况下可能存在正当理由 特定的行为是可以接受的,甚至是有用的,但完整的 应该理解影响并仔细权衡案件 在实施此标签描述的任何行为之前。
-
MAY 这个词,或形容词“可选”,表示一个项目是 真正可选。一个供应商可能会选择包括该项目,因为 特定市场需要它或因为供应商认为 它增强了产品,而另一个供应商可能会省略相同的项目。 不包含特定选项的实现必须是 准备与另一个实现互操作 包括该选项,尽管功能可能有所减少。在里面 同样的一个实现,它确实包含一个特定的选项 必须准备好与另一个实现互操作 不包括该选项(当然,对于该功能, 选项提供。)
所以所有包含“必须”的语句都是强制性的,其他的则不是。