根据 HTTP PATCH RFC,文档的部分表示是否是有效的“更改集”?

2024-05-07

这是什么RFC 5789 https://www.rfc-editor.org/rfc/rfc5789 says:

PATCH 方法请求将请求实体中描述的一组更改应用于由 Request-URI 标识的资源。这组更改以称为“补丁文档”的格式表示,该格式由媒体类型标识。如果Request-URI没有指向现有资源,服务器可以创建一个新资源,具体取决于补丁文档类型(是否可以逻辑上修改空资源)和权限等。

PUT 和 PATCH 请求之间的差异反映在服务器处理所附实体以修改 Request-URI 标识的资源的方式上。在 PUT 请求中,所包含的实体被认为是存储在源服务器上的资源的修改版本,并且客户端请求替换存储的版本。然而,对于 PATCH,所附实体包含一组指令,描述应如何修改当前驻留在源服务器上的资源以生成新版本。

假设我有{ "login": "x", "enabled": true },我想禁用它。

根据帖子“拜托。别像白痴一样打补丁。” http://williamdurand.fr/2014/02/14/please-do-not-patch-like-an-idiot/,正确的 PATCH 请求是

[{ "op": "replace", "path": "/enabled", "value": false }]

但是,让我们接受这个请求:

{ "enabled": false }

它还“包含一组说明如何修改当前驻留在源服务器上的资源”,唯一的区别是使用 JSON 属性而不是 JSON 对象。

它看起来不太强大,但如果需要的话,数组更改可以有一些其他特殊语法(例如{"a":{"add":[], "remove":[]}}),并且服务器逻辑可能无法处理任何更强大的东西。

根据 RFC,这是否是不正确的 PATCH 请求?如果是这样,为什么?
并且,另一方面,{ "op": "disable" }是一个正确的 PATCH 请求吗?


唯一的区别是使用 JSON 属性而不是 JSON 对象。

实际上比这更深一点。参考RFC 6902 https://www.rfc-editor.org/rfc/rfc6902很重要。第一个请求有一个Content-Type of application/json-patch+json,但第二个是application/json

重要的是您使用一种对此目的有用的“不同媒体类型”。你不必使用 JSON-PATCH,(我是json 合并补丁 https://datatracker.ietf.org/doc/html/draft-ietf-appsawg-json-merge-patch-07),但你不能只使用你想要的任何东西。您在第二部分中询问的基本上是“我可以制作自己的媒体类型吗”,答案是“可以”,只需将其记录下来并向 IANA 注册即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据 HTTP PATCH RFC,文档的部分表示是否是有效的“更改集”? 的相关文章

  • 使用 Vagrant,为什么 puppet 配置比自定义打包盒更好?

    我正在创建一个虚拟机来模仿我们的生产 Web 服务器 以便我可以与新开发人员共享它 让他们尽快上手 我已经阅读过 Vagrant 文档 但是我不明白使用通用基础盒并使用 Puppet 配置所有内容与打包已安装和配置所有内容的自定义盒相比有何
  • 如何在chrome中启用sharedArrayBuffer而不进行跨域隔离

    我有一个仅在本地计算机上运行的实验 例如 我加载外部网页https example com和 puppeteer 我注入一个 javascript 文件 该文件由http localhost 5000 到目前为止还没有问题 但是 这个注入的
  • 如何解决“错误:找不到与安装匹配的版本”?

    我正在尝试使用 pipelinenv 安装 django crispy forms 它安装是因为当我运行 pip freeze 命令时我看到它 当需要锁定 包 依赖项时 它面临锁定 我收到此错误 pipenv exceptions Reso
  • 如何修复在 laravel 项目中运行vendor/bin/phpunit 时权限被拒绝的问题

    每当我执行vendor bin phpunit在我的 laravel 项目的根路径中 它返回一个没有权限错误 我该如何解决这个问题 重要提示 我不想使用composer update或删除部分或全部vendor 目录然后使用composer
  • 使用 C 库时 C++ 中的常量正确性

    目前我正在开发一个 C 应用程序 我希望它是 const 正确的 意思是尽可能在参数上使用 const 之类的东西 然而 这个 C 应用程序使用了一个不经常使用 const 的 C 库 我遇到的问题是 当向 C 库中的函数发送参数时 参数不
  • 为什么 .Net 词典中的条目是按加法顺序排列的?

    我刚刚看到这种行为 我对此感到有点惊讶 如果我向字典中添加 3 或 4 个元素 然后执行 For Each 来获取所有键 它们将以我添加的顺序出现 这让我感到惊讶的原因是字典内部应该是一个哈希表 所以我希望事情能以任何顺序出现 按键的哈希排
  • 熊猫 Between_time 布尔值

    我正在尝试创建一个列 如果行值落在时间 09 00 和 17 00 之间 该列将分配 true 我可以使用轻松选择这些时间between time但无法分配新列 aTrue False df df between time 9 00 17
  • 如何在 iPhone 上实现炫酷的警报/信息叠加?

    我了解如何在我的 iPhone 应用程序中包含标准警报 并且可以使用 确定 或 关闭 按钮将其关闭 请参阅图中的示例 如何制作一个很酷的警报 通知覆盖层 就像 foursquare 应用程序中看到的那样 请参阅图片中的 foursquare
  • 在未排序的整数列表中最优搜索 k 个最小值

    我刚刚接受采访时提出了一个问题 我很好奇答案应该是什么 问题本质上是 假设您有一个包含 n 个整数的未排序列表 您如何找到此列表中的 k 个最小值 也就是说 如果您有一个 10 11 24 12 13 列表并且正在寻找 2 个最小值 您将得
  • 访问注释中的属性值

    我想访问注释中的属性值 作为属性的值 对于前 在我的属性文件中 我有一个条目表达式 3 10 在我的 Scheduler 类中 我使用注释 Scheduled cron VALUE 我想从表达式键对应的属性文件中读取这个值 尝试这样做 Va
  • 将 h1 元素的内容复制到剪贴板?

    所以 我做了一个翻译器 但效果不是很好 但无论如何 它正在工作 我想尝试添加一些可以复制结果的内容 有没有办法做到这一点 以下是我的代码 提前致谢 我知道有一种方法可以通过输入来完成此操作 但我不确定是否可以通过标题来完成 var myTe
  • 将表单作为本地表单传递给 Rails 5 中渲染的部分 ajax

    我已经查遍了 找不到有效的解决方案 相关控制器 profits controller rb def new tabs market Market order mjsnumber all first profit Profit new pro

随机推荐

  • 如何使用aaply并保留数组中的维度顺序?

    我有一个 3 维数组 我想将函数应用于第三维并返回一个数组 我很高兴 plyr aaply 几乎能满足我的要求 但是它会交换我的数组的尺寸 文档告诉我它是幂等的 这 在我查找之后 让我认为结构应该保持不变 这是一个带有恒等函数的可重现示例
  • Jenkins 多分支管道 - 在分支中配置属性?

    我们已经使用 Jenkins 多分支管道插件成功设置了构建管道 该插件在大多数情况下都运行良好 但是我们遇到了一个困扰我们的问题 Jenkinsfile包含一组属性 这些属性也显示在 UI 中 但如何为各个分支设置默认值 这就是我们的属性定
  • 如何使用 Haskell 中的 thyme 库从 Int 值创建 UTCTime?

    我有年 月 日 小时和分钟值 所有这些都是类型Int 我怎样才能将它们转换为UTCTime or UniversalTime 需要导入以下内容 import Control Lens import Data Thyme Clock impo
  • 错误:(52, 0) 未找到 Gradle DSL 方法:使用 Quickblox API 中的“сompile()”

    我尝试通过添加在线 Maven 依赖项在我的程序中使用 Quickblox API 我正在使用 Android Studio 当我尝试构建我的程序时 它显示以下错误 Error 52 0 Gradle DSL method not foun
  • .NET 声明式安全性:为什么 SecurityAction.Deny 无法使用?

    我已经搞乱了大约一天半的时间 现在正在筛选 NET Reflector 和 MSDN 文档 但无法弄清楚任何事情 在 NET 框架中 您可以通过标记如下方法来要求当前的委托人属于一个能够执行方法的角色 PrincipalPermission
  • 未定义的变量:HTTP_RAW_POST_DATA

    当我对 HTTP RAW POST DATA 进行简单的回显时 出现错误 Undefined variable HTTP RAW POST DATA 我在 php ini 中读到我需要取消勾选 always populate raw pos
  • 从编码视频文件中提取运动向量

    我正在尝试从编码的 mp4 文件中提取运动矢量数据 在之前的帖子中我发现 一个答案http www princeton edu jiasic cos435 motion vector c http www princeton edu jia
  • 如何更新我的 docker 服务/堆栈使用的最新映像?

    In the yml定义 我总是拉latest我的服务形象 当我将新映像推送到注册表并且想要更新堆栈中的服务使用的映像时 我没有看到任何 pull标志和文档码头服务更新 https docs docker com engine refere
  • 多项式混合 Logit 模型 mlogit r-package

    我发现了mlogit package https cran r project org web packages mlogit index html对于多项 Logit 模型 寻找估计多项混合 Logit 模型 在阅读了精彩的小插图后 我发
  • MICE LoggedEvents 是什么意思?

    我正在尝试使用以下方法运行多重插补miceR 中的函数 来自同名包 我收到一条警告 表明事件已被记录 这是输出mice loggedEvents来自我的 MWE 见下文 it im dep meth out 1 1 X pmm H 我不确定
  • react-google-maps/api 避免在某些状态更改后重新渲染地图

    我遇到了问题 我的 GoogleMaps 实例会刷新并以某些方式自我居中onClick设置状态的函数 并且将发生整个组件渲染周期 经过一番谷歌搜索后 有人建议将组件实例化分开并重新使用 现在的问题是我有一些逻辑来在内部显示标记
  • 我仍然没有获得代表

    使用委托不是可以帮助处理一些异步情况吗 我尝试了以下操作 但我的用户界面仍然挂起 你到底什么时候使用代表 Public Class Form1 Private Delegate Sub testDelegate Private Sub Bu
  • 使用百分比作为 img 元素的宽度和高度属性会产生什么后果?

    我正在寻找某种方法来定位img元素在HTML从 w3schools com 注意到这句话的页 面 它讲的是设置width in an img元素 在 HTML 4 01 中 宽度可以以像素或包含元素的百分比来定义 在 HTML5 中 该值必
  • R 中从右到左的运算符结合性可能吗?

    我是 R 新手 我刚刚发现我患有支架恐惧症 https mathematica stackexchange com a 17315 2266 请参阅链接中的评论 我喜欢这种方式magrittr符号 gt 有效 因为它在某些情况下避免了嵌套括
  • 淘汰赛“闪烁”问题

    我正在使用 KO 构建 SPA 单页应用程序 该应用程序看起来像一本书 用户可以翻页 问题是 每次加载页面时 都会有一小段时间页面 闪烁 用户会看到页面的无样式版本 我猜这是因为很多样式都依赖于 ko 绑定 所以在 ko 完成它 神奇 之前
  • 这是 `min` 和 `nanmin` 之间的区别; Matlab 中的“max”和“nanmax”?

    Matlab描述nanmin and nanmax像这样 NANMIN最小值 忽略NaNs NANMAX最大值 忽略NaNs 但实际上 min and max ignore NaNs too 那我应该使用哪个 根据我的测试 nanmin a
  • 如何使用 Rally 的 JAVA API 将标签添加到 Rally 中的测试用例?

    我一直在努力向 Rally 中的测试用例添加标签 该标签已存在于 Tags 集合中 但我无法将其添加到测试用例中 有人可以提供一个关于如何执行此操作的示例吗 多谢 下面是如何执行此操作的示例 该示例显示了向现有测试用例添加标签 以及创建新测
  • 检查互联网连接是否可用?

    我正在开发在线应用程序 问题 当互联网关闭或不可用时 它会给我错误 强制关闭 我尝试使用broadCast Receiver进行处理 但没有满足确切的解决方案 正在寻找更好的解决方案 public class MyBroadcastRece
  • 不活动后自动“停止”Sagemaker 笔记本实例?

    我有一个 Sagemaker Jupyter 笔记本实例 我一直错误地将它留在网上过夜 不必要地花费了金钱 当没有活动 例如 1 小时 时 是否有任何方法可以自动停止 Sagemaker 笔记本实例 或者我必须制作一个自定义脚本 您可以使用
  • 根据 HTTP PATCH RFC,文档的部分表示是否是有效的“更改集”?

    这是什么RFC 5789 https www rfc editor org rfc rfc5789 says PATCH 方法请求将请求实体中描述的一组更改应用于由 Request URI 标识的资源 这组更改以称为 补丁文档 的格式表示