AIP-161 域掩码

编号161
原文链接AIP-161: Field masks
状态批准
创建日期2021-03-01
更新日期2021-03-01

在(使用AIP-134的Update或类似方法)更新资源时,通常需要明确指定哪些域需要更新。服务可以忽略另外的域,即使用户发送了值。

定义一种掩码格式,为每个API处理更具体需求的方案虽然吸引人。但考虑到掩码需求不断变化,明智的做法是使用一种结构化语法,可以透明地进行更新,无需等待界面或客户端升级。

指南

域名字的掩码称为“域掩码”。表示域掩码的域 必须 使用 google.protobuf.FieldMask 类型。域掩码在Update请求(AIP-134)中很常见。

域掩码 必须 始终相对于资源:

警告 将读掩码作为请求消息中独立域(如 google.protobuf.FieldMask read_mask )的方案 已废弃 。

message UpdateBookRequest {// The book to update.//// The book's `name` field is used to identify the book to update.// Format: publishers/{publisher}/books/{book}Book book = 1 [(google.api.field_behavior) = REQUIRED];// The list of fields to update.// Fields are specified relative to the book// (e.g. `title`, `rating`; *not* `book.title` or `book.rating`).google.protobuf.FieldMask update_mask = 2;
}

读写一致性

如果使用域掩码,其读写行为 必须 自洽:

  • 如果用户使用某个掩码更新资源,然后使用相同掩码读取同一资源,服务 必须 返回完全相同的数据。
    • 例外:只输出域。
  • 类似地,使用某个掩码读取资源,然后用收到数据和相同掩码更新资源的请求 必须 不产生实际修改。

注意 这意味着任何对读请求或写请求有效的掩码, 必须 同时对两者都有效。

设定域掩码

域掩码 必须 允许使用 . 字符遍历指定消息结构中的域。

域掩码始终是相对于资源的,资源直接包含的域(如 title , rating )不需要遍历。遍历用在资源包含消息的时候(如 author.given_name )。

注意 用户 必须 可以指定整个消息域,或消息域的子域: author 和 author.given_name 都有效。

Map域

域掩码 可以 支持使用 . 字符遍历指定Map中的域,只要Map的键是字符串或整数。

域掩码 应当 支持字符串键,处理键不符合域掩码语法的情况。字符串键使用反引号包围。

message Book {// The name of the book.// Format: publishers/{publisher}/books/{book}string name = 1;// Reviews for the back cover. The key is the author of the review,// and the value is the text of the review.//// Valid field masks: reviews, reviews.smith, reviews.`John Smith`map<string, string> reviews = 2;
}

通配符

域掩码 可以 允许在重复域或Map上使用 * 字符,指示集合元素的特定子域:

message Book {option (google.api.resource) = {type: "library.googleapis.com/Book"pattern: "publishers/{publisher}/books/{book}"};// The name of the book.// Format: publishers/{publisher}/books/{book}string name = 1 [(google.api.field_behavior) = IDENTIFIER];// The author or authors of the book.// Valid field masks: authors, authors.*.given_name, authors.*.family_name// Invalid field masks: authors.0, authors.0.given_namerepeated Author authors = 2;
}

注意 域掩码 不得 允许通过索引访问重复域的特定元素。如果收到这种请求, 必须 返回 INVALID_ARGUMENT 错误。

只输出域

如果用户(使用通配符或指定包含只输出域的消息)间接在更新掩码中包含了只输出域,服务 必须 忽略随请求输入的任何只输出域,即使请求要求清理或修改它们。

如果用户在更新掩码中直接设定了只输出域,服务 必须 忽略随请求输入的只输出域,即使请求要求清理或修改它们,以便支持同一个域掩码同时用于输入和输出。

无效的域掩码条目

读取数据时,域掩码 可以 忽略指向不存在的值的条目(无论是域不存在,还是服务认定的无效Map键)。

写入数据时,如果条目指向不存在的值,服务 应当 返回 INVALID_ARGUMENT 错误。然而服务 可以 允许删除请求。

修订记录

  • 2023-10-18 更新关于更新掩码中存在只输出域的指南。
  • 2023-07-17 将 update_mask 指南移至AIP-134。

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

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

相关文章

掌握Kubernetes Network Policy,构建安全的容器网络

在 Kubernetes 集群中&#xff0c;默认情况下&#xff0c;所有 Pod 之间都是可以相互通信的&#xff0c;这在某些场景下可能会带来安全隐患。为了实现更精细的网络访问控制&#xff0c;Kubernetes 提供了 Network Policy 机制。Network Policy 允许我们定义一组规则&#xff0c…

Flask 小册子简介

这是一个Flask restful讲解的小册子&#xff0c;涵盖了 RESTful API 的概念、选择 Flask 的原因以及小册子的目标和结构。我会尽量写得详细&#xff0c;帮助你更好地理解。 1. 简介 1.1 什么是 RESTful API&#xff1f; 1.1.1 REST 的概念 REST&#xff08;Representational…

ElementUI 级联选择器el-cascader启用选择任意一级选项,选中后关闭下拉框

1、启用选择任意一级选项 在 el-cascader 标签上加上配置项&#xff1a; :props"{ checkStrictly: true }"例如&#xff1a; <el-cascaderref"selectedArrRef"v-model"selectedArr":options"optionsList":props"{ checkStri…

typedef 和 using 有什么区别?

在 C 编程中&#xff0c;类型别名&#xff08;Type Aliases&#xff09;是为已有类型定义新名称的一种机制&#xff0c;能够显著提升代码的可读性和可维护性。C 提供了两种工具来实现这一功能&#xff1a;传统的 typedef 和 C11 引入的 using 关键字。 概念 类型别名本质上是为…

VS2022C#windows窗体应用程序调用DeepSeek API

目录 一、创建DeepSeek API Key 二、创建窗体应用程序 三、设计窗体 1、控件拖放布局‌‌ 2、主窗体【Form1】设计 3、多行文本框【tbContent】 4、提交按钮【btnSubmit】 5、单行文字框 四、撰写程序 五、完整代码 六、运行效果 七、其它 一、创建DeepSeek API Ke…

docker 如何更新容器内的环境变量,并覆盖创建这个容器的镜像?

docker 如何更新容器内的环境变量&#xff0c;并覆盖串讲这个容器的镜像&#xff1f; 之前试过在容器内unset 环境变量&#xff0c;并进行docker commit 保存&#xff0c;发现这样是不行的&#xff0c;重新启动容器之后还是会出现之前设置过的环境变量 了解了下&#xff0c;u…

Android Coil总结

文章目录 Android Coil总结概述添加依赖用法基本用法占位图变形自定义ImageLoader取消加载协程支持缓存清除缓存监听 简单封装 Android Coil总结 概述 Coil 是一个用于 Android 的 Kotlin 图像加载库&#xff0c;旨在简化图像加载和显示的过程。它基于 Kotlin 协程&#xff0…

如何在WPS中接入DeepSeek并使用OfficeAI助手(超细!成功版本)

目录 第一步&#xff1a;下载并安装OfficeAI助手 第二步&#xff1a;申请API Key 第三步:两种方式导入WPS 第一种:本地大模型Ollama 第二种APIKey接入 第四步&#xff1a;探索OfficeAI的创作功能 工作进展汇报 PPT大纲设计 第五步&#xff1a;我的使用体验(体验建议) …

Spring Boot集成Minio笔记

一、首先配置MinIO 1、MinIO新建Bucket&#xff0c;访问控制台如图 创建访问密钥(就是账号和密码) 二、集成mino添加Minio客户端依赖 1.maven构建方式在pom.xml引入jar <dependency><groupId>io.minio</groupId><artifactId>minio</artifactI…

【开源宝藏】Spring Trace 一种轻量级的日志追踪新方式

Spring Trace&#xff1a;一种轻量级的日志追踪新方式 一、前言 在日常开发中&#xff0c;我们常常需要在日志中标记某个请求的唯一标识&#xff08;Trace ID&#xff09;或上下文信息&#xff0c;以便快速定位问题或查看调用链路。传统做法通常会使用 MDC&#xff08;Mapped…

Web网页开发——水果忍者

1.介绍 复刻经典小游戏——水果忍者 2.预览 3.代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title&…

【Flink银行反欺诈系统设计方案】6.用户画像数据与反欺诈系统的关联思路

【Flink银行反欺诈系统设计方案】6.用户画像数据与反欺诈系统的关联思路 概要1. 用户画像数据与反欺诈系统的关联思路1.1 用户画像数据内容1.2 数据赋能反欺诈的核心逻辑 2. 用户画像赋能反欺诈的3个案例2.1 案例1&#xff1a;消费习惯异常检测2.2 案例2&#xff1a;设备/地理位…

如何在unity中完整录制一段动画

在动画制作中&#xff0c;需要对接音频部门进行音效的制作。通常需要完整且无多余帧数的动画视频作为时间和帧数对帧参考&#xff0c;这时候手动录屏就会显得不够精确&#xff0c;这里分享一个插件录制方法&#xff0c;可以自定义录制起始位置&#xff0c;0帧起手完整录制。 录…

Jetson Orin 安装 onnxruntime

Jetson Orin 安装 onnxruntime onnxruntime在Jetson上安装只需注意三件事&#xff1a; 版本&#xff01; 版本&#xff01; 还是TMD版本&#xff01; 本机环境 Jectpack : 5.1.2CUDA : 11.4cuDNN &#xff1a;8.6.0 版本说明 关于onnxruntime的版本适配不同的官方有不同的…

Manus AI : Agent 元年开启.pdf

Manus AI : Agent 元年开启.pdf 是由华泰证券出品的一份调研报告&#xff0c;共计23页。报告详细介绍了Manus AI 及 Agent&#xff0c;主要包括Manus AI 的功能、优势、技术能力&#xff0c;Agent 的概念、架构、应用场景&#xff0c;以及 AI Agent 的类型和相关案例&#xff0…

【为什么会有 map、weakmap 类型?】

为什么会有 map、weakmap 类型? 传统对象的局限性催生 Map‌1. 键类型单一性‌2. 有序性与迭代支持‌3. 性能优化场景‌ 内存管理需求催生 WeakMap‌1.弱引用机制‌2. 私有数据存储‌3. 规避循环引用问题‌ 总结 传统对象的局限性催生 Map‌ 1. 键类型单一性‌ 传统对象&…

SpringSecurity认证授权完整流程

SpringSecurity认证流程&#xff1a;loadUserByUsername&#xff08;&#xff09;方法内部实现。 实现步骤&#xff1a; 构建一个自定义的service接口&#xff0c;实现SpringSecurity的UserDetailService接口。建一个service实现类&#xff0c;实现此loadUserByUsername方法。…

本地部署DeepSeek R1大数据模型知识库

DeepSeek-V3 的综合能力 DeepSeek-V3 在推理速度上相较历史模型有了大幅提升。在目前大模型主流榜单中&#xff0c;DeepSeek-V3 在开源模型中位列榜首&#xff0c;与世界上最先进OpenAI 闭源模型不分伯仲。 1、下载Ollama运行大数据库 Ollama支持 Llama 3.3, DeepSeek-R1, Phi-…

云端秘境:EC2的奇幻之旅

在一个神秘的云端世界里&#xff0c;流传着一个传说——只要掌握了 EC2&#xff08;Elastic Compute Cloud&#xff09; 的奥秘&#xff0c;就能召唤出强大的骑士军团&#xff0c;在云端之上建造属于自己的帝国。年轻的程序法师 艾伦&#xff08;Allen&#xff09;&#xff0c;…

【javaEE】多线程(基础)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…