欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > AIP-156 单例资源

AIP-156 单例资源

2025/9/22 4:15:51 来源:https://blog.csdn.net/tq1086/article/details/145954310  浏览:    关键词:AIP-156 单例资源

编号156
原文链接AIP-156: Singleton resources
状态批准
创建日期2019-05-12
更新日期2024-04-15

API有时需要表示在任意上级资源中,始终只存在一个实例的资源。常见的例子是配置对象。

指南

API 可以 定义 单例资源 。单例资源 必须 始终随上级资源而存在,每个上级资源拥有唯一的单例资源。

例如:

message Config {option (google.api.resource) = {type: "api.googleapis.com/Config"pattern: "users/{user}/config"singular: "config"plural: "configs"};// additional fields including name
}

Config 单例资源具有以下接口:

rpc GetConfig(GetConfigRequest) returns (Config) {option (google.api.http) = {get: "/v1/{name=users/*/config}"};
}rpc UpdateConfig(UpdateConfigRequest) returns (Config) {option (google.api.http) = {patch: "/v1/{config.name=users/*/config}"body: "config"};
}
  • 单例资源 不得 拥有用户设定或系统生成的标识;其资源名字包含上级资源名字,后接一个固定部分。
    • 示例: users/1234/config
  • 单例资源始终使用单数形式。
    • 示例: users/1234/thing
  • 单例资源定义 必须 提供 singular 和 plural 域(见上例)。
  • 单例资源 可以 作为其他资源的上级资源。
  • 单例资源 不得 定义Create或Delete标准方法。单例资源在其上级资源创建或删除时自动创建或删除。
  • 单例资源 应当 定义Get和Update方法, 可以 按需提供自定义方法。
    • 如果资源的所有域都是只输出域,单例资源 不得 定义Update方法。
  • 单例资源 可以 定义List方法,但 必须 遵守AIP-159。见下例。
    • 用来表示集合的路径模式中的最后一段 应当 使用单例资源的 plural 形式,如 /v1/{parent=users/*}/configs 。
    • 如果按照AIP-159提供了上级资源标识而非连字符 - ,服务 应当 返回包含与指定上级资源对应的单例资源集合。
rpc ListConfigs(ListConfigsRequest) returns (ListConfigsResponse) {option (google.api.http) = {get: "/v1/{parent=users/*}/configs"};
}message ListConfigsRequest {// To list all configs, use `-` as the user id.// Formats:// * `users/-`// * `users/{user}`//// Note: Specifying an actual user id will return a collection of one config.// Use GetConfig instead.string parent = 1 [(google.api.resource_reference).child_type = "api.googleapis.com/Config"];// other standard pagination fields...
}

理由

支持标准List方法

虽然单例资源本身不是集合中的元素,但它们可以被视为上级资源集合的一部分。上级资源与单例资源的一对一对应关系意味着每个上级资源都有一个单例资源,在与跨集合读取模式结合时,自然的产生了一些基于集合的方法。由于间接依赖于上级资源集合,单例资源可以作为集合提供给API消费者。此外,在此类方法中将单例资源组成伪集合,可以在将来扩展到实际集合上,弥补单例模式不足。

包含 plural 定义

虽然单例资源在定义上是单数,但在某些情况下,也可能以复数形式出现。例如,服务支持标准List方法(如本文所描述)。因此最好提前声明单例资源类型的复数形式,以免需要时找不到。

修订记录

  • 2024-04-15 单例资源必须提供 singular 和 plural 。
  • 2023-08-10 添加标准 List 方法支持。
  • 2023-07-26 阐明只读单例资源不应具有 Update 方法。
  • 2021-11-02 添加示例消息,说明上级资源资格。
  • 2021-01-14 将示例从 settings 改为 config ,提高清晰程度。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词