问题标签 [http-patch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何在 Web API 和 OData 中打补丁
通过阅读Patch 动词的 RFC 规范,很明显Patch
动词不应该获取值来部分更新实体,而是要进行操作:
...但是,对于 PATCH,封闭的实体包含一组指令,描述如何修改当前驻留在源服务器上的资源以生成新版本。
在 Delta 类的 MSDN 中,它也很清楚,正如补丁描述所说:
使用此 Delta跟踪的更改覆盖原始实体。
与Put的描述不同:
使用存储在此 Delta 中的值覆盖原始实体。
到目前为止一切顺利,但我找不到用 OData 发送这些“指令”的方法,无论我做什么,Delta.Patch 只会替换这些值。
补丁请求的语法应该是什么?
我尝试的方法是:
和
和附近的东西。
更新:
感谢 Michael Moore 并阅读了 ILSpy 的整个 Delta 课程,我认为这确实是 Patch 动词设计中的一个错误。
我为微软打开了一个错误,如果你也需要修复它,你可以投票。
rest - 给定类型的所有资源的 REST PATCH
我在 REST API 中有一组资源,可以这样说:
我已经将“停止观看”命令实现为 PATCH:
实施“停止观看所有文件夹”的正确方法是什么?我想到了
但我不确定这是否有意义(集合本身没有watched
属性)。
还是根本不应该在 API 级别实现(而是由客户端迭代)?
不过,这似乎效率低下。
http-patch - 根据 HTTP PATCH RFC,文档的部分表示是否是有效的“更改集”?
这是RFC 5789所说的:
PATCH 方法请求将请求实体中描述的一组更改应用于由 Request-URI 标识的资源。这组更改以一种称为“补丁文档”的格式表示,该格式由媒体类型标识。如果 Request-URI 不指向现有资源,则服务器可以创建新资源,具体取决于补丁文档类型(是否可以在逻辑上修改空资源)和权限等。
PUT 和 PATCH 请求之间的区别体现在服务器处理封闭实体以修改由 Request-URI 标识的资源的方式上。在 PUT 请求中,包含的实体被认为是存储在源服务器上的资源的修改版本,并且客户端请求替换存储的版本。然而,对于 PATCH,封闭的实体包含一组指令,描述如何修改当前驻留在源服务器上的资源以生成新版本。
假设我有{ "login": "x", "enabled": true }
,我想禁用它。
根据帖子“请。不要像白痴一样修补。” ,正确的 PATCH 请求将是
但是,让我们接受这个请求:
它还“包含一组说明如何修改当前驻留在源服务器上的资源”,唯一的区别是使用 JSON 属性而不是 JSON 对象。
它似乎不太强大,但如果需要,数组更改可以有一些其他特殊语法(例如{"a":{"add":[], "remove":[]}}
),并且服务器逻辑可能无法处理任何更强大的东西。
根据 RFC,这是不正确的 PATCH 请求吗?如果是这样,为什么?
另一方面,一个正确的 PATCH 请求会{ "op": "disable" }
是一个正确的 PATCH 请求吗?
asp.net-web-api - .NET web api HttpPatch 返回 403 禁止
我有一个提供翻译列表的简单资源。get 端点接受一种语言并返回一个翻译字典。任何更新都将只针对一个翻译,所以我认为将其作为补丁进行是合适的。
在我的 api 控制器中,我可以很好地进行 put 工作,但是我对补丁端点所做的任何调用都会给我一个 403 禁止错误,我不明白为什么。
ruby-on-rails - Rails - 覆盖活动记录属性的设置器
我正在构建一个 Rails 服务器,其中一些用户跟踪其他用户位置的更改,并在每次更新位置时收到 websockets 的通知。
目前,我调用 update_location 操作而不是调用常规更新以更新位置并调用 WebsocketRais 触发器。这对我来说似乎很奇怪,我认为应该有更好的方法。
我知道的唯一其他选择是调用更新操作并检查位置是否已更新,并通知订阅者。这对我来说也很丑陋。
我希望能够以某种方式覆盖资源的 Rails 更新,并在每次更新 location 属性时通知订阅者 - 类似于 location 属性的 setter 方法,它可以做其他事情,而不仅仅是设置。甚至可能吗?我怎么能做到呢?
java - HTTPClient 的 PATCH 方法不允许正文实体?
我正在使用 Apache HTTPClient 版本 4.3.5。我正在尝试创建一个 HTTP PATCH 请求。
在检查收到的实际请求时,它没有与之关联的正文。类似的代码适用于 HTTP POST 请求。
python - 如何使用 Django Rest Framework 修补单个字段?
我有一个包含许多字段的模型“MyModel”,我想使用 PATCH 方法更新字段“状态”。我正在使用基于类的视图。有什么方法可以实现 PATCH?
json - PATCH 多个资源
简而言之:允许 PATCH 请求更新资源集合(不仅仅是单个资源,而是单独的资源)是否符合标准、RESTful 和其他好主意?
长:
我正在考虑公开一种对我的资源集合启用批量、原子更新的方法。例子:
上下文是商业解决方案的公共 API。允许此类 PATCH 的好处是原子性和批处理友好性,无需发送垃圾邮件请求、单独处理故障等。
我已经咨询了https://www.rfc-editor.org/rfc/rfc6902和https://www.rfc-editor.org/rfc/rfc5789但如果这符合要求则找不到明确的答案。RFC 主要指的是“资源”,但也可以这样对待资源集合。
这是一个好主意吗?有更好的选择吗?
django - 为什么 Django Rest Framework 上的 PATCH 会擦除未更改的 ManyToMany 字段?
我正在PATCH
使用 DRF 构建模型,并且出于某种原因,该调用正在擦除 ManyToMany 字段。为什么是这样?
我有一个Feature
模型:
...和一个序列化器:
...和一个视图集:
这给出了输出GET /api/features/5/
:
假设我想PATCH
调用 update name
:
这成功更新了对象,但结果也会tags
从对象中擦除:
rest - 202 Accepted 是对 http 补丁的可接受响应吗?
我需要对资源进行异步更新。是否有关于 202 Accepted 是否是对 PATCH 的适当响应的明确声明?
此处的官方文档从未提及 202,并且似乎假设由于 PATCH 导致的资源更改是同步进行的,但它从未做出明确的声明。
PATCH 动作的适当原理图是什么?