问题标签 [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.
ruby-on-rails-4 - 如何使用我的咖啡脚本将表单方法更改为 PUT/PATCH?
我正在使用 Rails 4.2.3。在我的咖啡脚本中,我手动编辑表单的 URL 和操作,使其像这样......</p>
但我提交了我的表格(通过点击我的提交按钮......)
请求(在 Mac Chrome 和 Firefox 上)使用 method = “GET” 提交,而不是我将其更改为的内容。我需要做什么才能通过 PATCH 方法提交?(我需要这样做,因为这是我的更新操作所要求的)。
json - 如何使用 Apache HttpClient 库提交带有 JSON 数据的 PATCH 请求?
我正在使用 Apache HTTP 客户端 v 4.3.4。如何通过 PATCH 方法将 JSON 数据提交到 URL?我试过这个
但在“req.setEntity”行,我得到编译错误,“方法未定义”。请注意,我的请求需要按原样发送 JSON 数据,而不是将其放入名称-值参数对中。
json - HTTP ReST:更新大型集合:比 JSON PATCH 更好的方法?
我正在设计一个 Web 服务来定期接收列表更新。此时,列表仍然可以建模为单个实体 ( /lists/myList
) 或具有许多资源的实际集合 ( /lists/myList/entries/<ID>
)。列表很大(数百万个条目),更新很小(通常少于 10 次更改)。
客户端将获取要分发的 Web 服务 URL 和列表,例如:
- http://hostA/service/lists : list1, list2
- http://hostB/service/lists : list2, list3
- http://hostC/service/lists : list1, list3
然后它将按配置推送列表和更新。Web 服务 URL 后面是否有一些数据库很可能但尚未确定。
我一直在研究,似乎使用 JSON 补丁格式的 HTTP PATCH 是最好的方法。
背景和示例:每个列表都有一个识别名称、一个优先级和数百万个条目。每个条目都有一个 ID(由客户端确定)和几个可选属性。创建具有优先级 1 和两个列表条目的列表“requiredItems”的示例:
对于更新,客户端首先需要知道列表现在在服务器上的样子。为此,我将向列表实体添加一个属性“修订”。
然后,我会查询这个属性:
然后客户端会看到服务器上的版本和客户端已知的最新版本之间需要更改的内容,并编写一个 JSON 补丁。例子:
问题:
- 由于不经常使用的 HTTP 动词 PATCH,这种方法的缺点是客户端支持略少。在不牺牲 HTTP 兼容性(幂等性等)的情况下,是否有更兼容的方法?
- 将单个列表条目建模为单独的资源并使用
PUT
andDELETE
(可能与ETag
and/orIf-Match
)似乎是一种选择(PUT /lists/requiredItems/entries/3
,DELETE /lists/requiredItems/entries/1
PUT /lists/requiredItems/revision
),但是当网络落在更新链的中间时,我如何确保应用所有这些操作?HTTP PATCH 是否允许在多个资源上工作? - 有没有更好的方法来“版本”列表,也许隐含地也改进了它们的更新方式?请注意,客户端确定修订号。
- 用 查询修订号是否正确
GET /lists/requiredItems?property=revision
?它应该是一个单独的资源/lists/requiredItems/revision
吗?如果它应该是一个单独的资源,我将如何自动更新它(即列表和修订都更新或都没有更新)? - 它可以在 JSON 补丁中首先测试修订值
3
,然后将其更新到10
同一个补丁中吗?
sql - GoLang、REST、PATCH 和构建 UPDATE 查询
几天以来,我一直在为如何在 Go REST API 中处理 PATCH 请求而苦苦挣扎,直到我找到了一篇关于使用指针和omitempty
标签的文章,该文章我已经填充并且工作正常。很好,直到我意识到我仍然需要构建一个UPDATE
SQL 查询。
我的struct
样子是这样的:
我期待一个PATCH /resources/{resource-id}
包含这样一个请求正文的请求:
在我的处理程序中,我将以Resource
这种方式构建对象(忽略导入,忽略错误处理):
现在,对于正常UPDATE
(PUT
请求)我会这样做(简化):
PATCH
和标签的问题omitempty
是该对象可能缺少多个属性,因此我不能只准备一个带有硬编码字段和占位符的语句......我必须动态构建它。
我的问题来了:如何UPDATE
动态构建这样的查询?在最好的情况下,我需要一些解决方案来识别集合属性,获取它们的SQL字段名称(可能来自标签),然后我应该能够构建UPDATE
查询。我知道我可以使用反射来获取对象属性,但不知道如何获取它们的sql 标记名称,当然如果可能的话,我想避免在此处使用反射......或者我可以简单地检查它不是的每个属性nil
,但在现实生活中,结构比此处提供的示例大得多......
有人可以帮我解决这个问题吗?是否有人已经必须解决相同/相似的情况?
解决方案:
根据这里的答案,我能够想出这个抽象的解决方案。该SQLPatches
方法从给定的结构构建SQLPatch
结构(因此没有具体的结构):
然后我可以简单地这样称呼它:
您可以在Go Playground 查看。我在这里看到的唯一问题是,我为两个切片分配了传递的结构中的字段数量,可能是 10,即使我最终可能只想修补一个属性,导致分配的内存比需要的多。 .知道如何避免这种情况吗?
c# - 如何在 dotnet core 中使用 HttpClient 进行补丁请求?
我正在尝试使用in dotnet core创建一个Patch
请求。HttpClient
我找到了其他方法,
但似乎找不到Patch
选项。是否可以使用Patch
请求HttpClient
?如果是这样,有人可以告诉我一个例子吗?
rest - 执行 PATCH upsert 请求的正确方法
向 REST API 请求以下 upsert 的正确方法是什么?
我正在努力构建一个 NoSQL 集合,该集合基于对前端应用程序的最请求返回。
假设您有以下文档:
需要将元素插入到 user.private_comments 数组中。
根据https://www.rfc-editor.org/rfc/rfc6902#appendix-A.5,我可以请求替换指令 PATCHing 以下数据:
问题是在这种情况下 '$index' 是未知的。
我想出的一个可能的解决方案是创建类似于以下操作的内容:
但是,实现 API 的用户不应在 PATCH 请求中提供 id 值,因为该值已经可以通过接收令牌访问。我应该将操作简化为:
并在后端处理它,所以当它和 upsert 操作没有'find'和'find_by'变量时,我假设'find_by':'id'和'find':value_from_token?
此外,我无法在漏洞文档上执行简单的 GET/UPDATE,因为用户没有收到漏洞文档,因此更新会损害数据。
arrays - HTTP PATCH:用于添加到空数组的正确 JSON Patch 表示法
给定类似于以下 JSON 的内容:
使用JSON Patch表示法将项目添加到mediaContainers
数组的正确方法是什么?我试过了
和
没有成功,现在这是有道理的,因为这个数组是空的。根据我在规范中看到的,所有示例都处理非空数组,所以我在这里有点茫然。
rest - HTTP PATCH 请求可以创建资源吗?
如果将 PATCH 请求应用于尚不存在的资源,是否允许创建资源,或者在这种情况下我是否需要单独的 POST/PUT 请求?
请求将PATCH
转到资源的 URL,例如:PATCH /object/1234
. 如果 ID 为 1234 的对象在数据库中,我将创建它,否则我将更新它。
该PATCH
请求不包含所有字段,这就是我不使用PUT
.
rest - 为什么 PATCH 既不安全也不幂等?
我很难理解为什么 PATCH 在 PUT 所在的地方不安全。Aso 幂等部分 - 如果我更新资源的一个字段,该字段在更新后不会返回相同的值吗?