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 ,提高清晰程度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/72229.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图(水文,勿三)

大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 这一节我们来学习指针的相关知识,学习内存和地址,指针变量和地址,包…

【实用技巧】RAGFlow+DeepSeek搭建私人Ai助理

前言 满血版DeepSeek虽然很好用,但仍然有三个主要缺陷: 联网的DeepSeek无法解决数据安全问题,如果使用,数据将传输到其服务器,数据隐私性无法保证。上传的文件存在限制,无法解决有多个文件的问题。回答的…

Storm实时流式计算系统(全解)——中

storm编程的基本概念-topo-spout-bolt 例如下: storm 编程接口-spout的结构及组件实现 storm编程案例-spout组件-实现 这是我的第一个组件(spout组件继承BaseRichSput)所有重写内部的三个方法,用于接收数据(这里数据是…

【tplink】校园网接路由器如何单独登录自己的账号,wan-lan和lan-lan区别

老式路由器TPLINK,接入校园网后一人登录,所有人都能通过连接此路由器上网,无法解决遂上网搜索,无果,幸而偶然看到一个帖子说要把信号源网线接入路由器lan口,开启新世界。 一、wan-lan,lan-lan区…

Qt常用控件之旋钮QDial

旋钮QDial QDial 表示一个旋钮控件。 1. QDial属性 属性说明value当前数值。minimum最小值。maximum最大值。singleStep按下方向键时改变的步长。pageStep按下 pageUp/pageDown 的时候改变的步长。sliderPosition界面上旋钮显示的初始位置。tracking外观是否会跟踪数值变化&…

微服务笔记 2025/2/15

微服务是一种软件架构风格,它是以专注于单一职责的很多小型项目为基础,组合出复杂的大型应用。 微服务是一种架构。 微服务是一种架构。 微服务是一种架构。 以前自己做项目最常用的架构是单体架构。单体项目不适合开发大型项目。 学习微服务技术来解…

7-1JVMCG垃圾回收

一、GC的作用与原理 ​核心功能​ 自动识别并回收堆内存中不再被引用的对象,释放内存空间。 避免手动管理内存的复杂性(如C/C中的delete/free操作),降低内存泄漏风险。 ​判断对象可回收的方法​ ​可达性分析算法:…

yunedit-post ,api测试比postman更好

postman应该是大家最熟悉的api测试软件了,但是由于它是外国软件,使用它的高端功能注册和缴费都比较麻烦。生成在线文档分享也经常无法访问被拦截掉。 这里可以推荐一下yunedit-post,该有的功能都有。 https://www.yunedit.com/postdetail …

010 rocketmq批量消息

文章目录 批量消息BatchProducer.javaBatchConsumer.java 批量消息 批量发送可以提⾼发送性能,但有⼀定的限制: topic 相同 waitStoreMsgOK 相同 (⾸先我们建设消息的iswaitstoremsgoktrue(默认为true), 如果没有异常,我们将始终收到"O…

6.6.6 嵌入式SQL

文章目录 2个核心问题识别SQL语句主语言和SQL通信完整导图 2个核心问题 SQL语句嵌入高级语言需要解决的2个核心问题是:如何识别嵌入语句?如何让主语言(比如C,C语言)和SQL通信? 识别SQL语句 为了识别主语言中嵌入的SQL…

Windows安装sql server2017

看了下官网的文档,似乎只有ubuntu18.04可以安装,其他debian系的都不行,还有通过docker的方式安装的。 双击进入下载的ISO,点击执行可执行文件,并选择“是” 不要勾选 警告而已,不必理会 至少勾选这两…

RuoYi框架介绍,以及如何基于Python使用RuoYi框架

若依框架(RuoYi)是一款基于Spring Boot和Vue.js的开源快速开发平台,广泛应用于企业级应用开发。它提供了丰富的功能模块和代码生成工具,帮助开发者快速搭建后台管理系统。 主要特点 前后端分离:前端采用Vue.js&#x…

从零搭建Tomcat:深入理解Java Web服务器的工作原理

Tomcat是Java生态中最常用的Web服务器之一,广泛应用于Java Web应用的部署和运行。本文将带你从零开始搭建一个简易的Tomcat服务器,深入理解其工作原理,并通过代码实现一个基本的Servlet容器。 1. Tomcat的基本概念 Tomcat是一个开源的Servl…

京东云DeepSeek-R1模型一键部署教程,基于智算GCS【成本2元】

使用京东云智算一键部署DeepSeek-R1模型,京东云智算服务AI平台GCS支持DeepSeek-R1模型预装环境,支持1.5B、7B、32B及70B参数模型环境,用户可在GCS中快速启动,使用ChatbotUI或者Open-WebUI作为用户界面,进行测试并接入业…

Jenkins 自动打包项目镜像部署到服务器 ---(前端项目)

Jenkins 新增前端项目Job 指定运行的节点 选择部署运行的节点标签,dev标签对应开发环境 节点的远程命令执行配置 jenkins完整流程 配置源码 拉取 Credentials添加 触发远程构建 配置后可以支持远程触发jenkins构建(比如自建的CICD自动化发布平台&…

7.2 - 定时器之计算脉冲宽度实验

文章目录 1 实验任务2 系统框图3 软件设计 1 实验任务 本实验任务是通过CPU私有定时器来计算按键按下的时间长短。 2 系统框图 参见7.1。 3 软件设计 注意事项: 定时器是递减计数的,需要考虑StartCount<EndCount的情况。 /***********…

双机热备旁挂组网实验

1拓扑图 2.要求 1 、 SW3 的流量 正常情况下: SW1_VRF-->FW1--->SW1_Public--->R5 故障情况下: SW2_VRF-->FW2--->SW2_Public--->R6 2 、 SW4 的流量 正常情况下: SW2_VRF-->FW2--->SW2_Public--->R6 故障情…

2025春新生培训数据结构(树,图)

教学目标: 1,清楚什么是树和图,了解基本概念,并且理解其应用场景 2,掌握一种建图(树)方法 3,掌握图的dfs和树的前中后序遍历 例题与习题 2025NENU新生培训(树&#…

HTML 日常开发常用标签

文章目录 HTML 日常开发常用标签1、基本结构标签2、内容标签3、多媒体标签4、表单标签5、列表和定义标签6、表格标签7、链接和图像8、元数据9、语义化标签(HTML5新增)10、框架和内联11、交互12、过时或不推荐使用的标签 HTML 日常开发常用标签 1、基本结…

7.1.1 计算机网络的组成

文章目录 物理组成功能组成工作方式完整导图 物理组成 计算机网络是将分布在不同地域的计算机组织成系统,便于相互之间资源共享、传递信息。 计算机网络的物理组成包括硬件和软件。硬件中包含主机、前端处理器、连接设备、通信线路。软件中包含协议和应用软件。 功…