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.pswp.cn/bicheng/72229.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72229.shtml
英文地址,請注明出處:http://en.pswp.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 計算機網絡的組成

文章目錄 物理組成功能組成工作方式完整導圖 物理組成 計算機網絡是將分布在不同地域的計算機組織成系統,便于相互之間資源共享、傳遞信息。 計算機網絡的物理組成包括硬件和軟件。硬件中包含主機、前端處理器、連接設備、通信線路。軟件中包含協議和應用軟件。 功…