问题标签 [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.

0 投票
1 回答
1031 浏览

javascript - Backbone.stickit 和 html-form:如何只保存(补丁)更改的属性?

tl;博士

如何使用带有 html 表单的主干.stickit 来更改从服务器获取的现有模型,并且只将更改的属性(由 html 表单中的用户输入更改)修补到服务器?

/tl;博士

我在一个backbone.js 应用程序中使用backbone.stickit将模型绑定到作为主干视图一部分的HTML 表单。到目前为止,这工作正常,但如果我要保存绑定模型,它会变得有点复杂。这是因为我想使用 PATCH 方法并且只将更改的属性发送到服务器。我试图说明我到目前为止所做的事情:

从服务器获取模型

最后一行表示我的问题,因为我认为我可以changedAtrributes()稍后使用该方法来获取需要在服务器上打补丁的属性。所以我尝试了我在这里找到的解决方法

做stickit-bindings

现在我渲染我的视图并调用视图stickit()上的方法来进行绑定:

绑定工作正常,我的用户模型得到更新,但是changedAttributes()一直保持空白。

将模型保存到服务器

如果用户进行了所有需要的更改,则应将模型保存到服务器。我想使用 PATCH 方法,并且只将更改的属性发送到服务器。

或者

第二种方法有不同的结果:

  1. 如果我没有使用user.set({})woraround,所有属性都会被修补到服务器
  2. 如果我使用user.set({})woraround 的返回值为changedAttributes()“false”并且所有属性都被 PUT 到服务器
  3. 如果我user.set("age","123")在调用之前调用a save(),那么只有年龄属性被修补到服务器

set()所以结果 3 是我想要的行为,但这有两个问题:首先,如果在 html 表单中更改属性,stickit 似乎没有使用模型上的方法来更新属性。其次,如果您set()使用一个属性调用,然后使用另一个属性调用,则仅返回第二个属性changedAttributes()

也许我只是监督了骨干网或骨干网.stickit 文档中的某些内容,所以我没有得到想要的行为。有什么想法吗?

0 投票
2 回答
10230 浏览

http - HTTP PATCH 方法。请求正文中的内容

我正在使用 Symfony2 开发一个 REST API。我有一个预订系统,我想在客户的预订得到管理员验证后向他发送一封电子邮件。

我有一个 Reservation 资源,我们可以使用以下 url 验证预订:

补丁 localhost/:id/验证

我想知道在使用 PATCH 方法验证资源时将电子邮件内容放入请求正文是否正确。

如果没有,正确的方法应该是什么?

谢谢,迈赫迪。

0 投票
1 回答
872 浏览

python - 使用带有 Django 图像字段和 s3 的 PATCH

在我当前的项目中,我将图像存储在 s3 存储桶中。我有一个 pre_save 信号接收器,可以从 Image 类的 s3 存储桶中删除实际图像。

我的问题是,我正在使用 django-rest-framework,我想让 PATCH 工作。但是,例如,如果我尝试修补图像描述,它将删除图像本身。我的问题是,我如何编写一个可以区分天气的 IF 补丁中是否存在需要更改的新图像,如果没有,则什么也不做?

0 投票
1 回答
591 浏览

python - 使用滤锅验证 PATCH 请求

编辑:我最初的问题涉及 PUT 请求,我已根据 thecoshman 提供的答案将其更改为 PATCH。

我正在使用檐口开发一个 RESTful 网络服务,我最近发现了漏勺。我的问题与 PATCH 请求有关。我现在知道 PUT 请求应该是完整的记录,但 PATCH 请求不是这样。我可以使用滤锅来验证附加到 PATCH 请求的 json 数据吗?

Colander 非常适合验证 POST 请求,因为它可以确保我的 json 中有所有正确的数据,并且还可以删除任何无关的数据。

这是我的简单模式。

这使我可以像这样保持我的视图代码简单。

schema=OrganisationSchema验证请求和位置的 json 主体的神奇之处在于self.request.validated['organisation']按照模式。

它也适用于我的其他验证器,可确保主键尚未使用。

但是,如果我想处理 PATCH 请求以更新fullnameordescription字段,则验证将失败,除非该请求还包含orgname我不想更改的值。

什么是最好的解决方案?我是否坚持将完整和有效的记录修补到服务器,我是否定义了不同的模式或者我错过了什么?

0 投票
6 回答
215492 浏览

http - 我应该在我的 REST API 中使用 PATCH 还是 PUT?

我想为以下场景使用适当的方法设计我的休息端点。

有一个群。每个组都有一个状态。该组可以由管理员激活或停用。

我应该将终点设计为

或者

0 投票
1 回答
13698 浏览

rest - 浏览器中的 HTTP PATCH 支持

我正在为我的应用程序设计 REST 端点,我需要为一些端点使用 PATCH。所有支持 HTTP/1.1 的浏览器都能够支持 PATCH 吗?

0 投票
2 回答
1970 浏览

delphi-xe5 - 如何在 Delphi 中发出 HTTP Patch 请求

这个问题是关于在 Delphi XE5 中构建的应用程序。

我正在与第三方合作提供一个应用程序,该应用程序允许用户通过 HTTP 发布到第三方 API 来更新 JSON 格式的信息。如果我将用户信息分成单个对象,我可以使用 POST 方法,但由于单个事件的数量,该过程很慢。如果我对包含多个对象的文件执行批量发布,它会快得多,但 api 要求我在上传文件与单个对象时使用 PATCH 动词。我可以使用 curl 来做到这一点,但我想避免必须在每个用户系统上安装 curl 才能这样做。

有没有办法在 Delphi 中使用 PATCH 动词?Indy 似乎不支持 PATCH。

0 投票
1 回答
68 浏览

ravendb - 将数组元素添加到集合中的所有文档

我的Foo文档有一个CustomData用于添加用户可配置属性的集合。

有时,当我创建这些属性时,我需要为它们添加默认值以进行索引。

这就是我试图用于此目的的内容:

这会生成以下 HTTP 请求:

这会返回200 OK,但不会修改任何文件。

0 投票
1 回答
823 浏览

jquery - 在 Internet Explorer 中为 CORS PATCH 请求获取“权限被拒绝”错误

真的被这个bug弄糊涂了。当我尝试发出跨域 PATCH 请求(使用 jQuery.ajax)时,所有版本的 IE,即使是那些支持 CORS 的版本,都会抛出“权限被拒绝”错误。所有其他方法(甚至 PUT)都可以正常工作,但 PATCH 在 send() 调用上会立即触发错误。

考虑到更高版本的 IE 支持 CORS,并且据说支持所有方法类型,是否有某些原因导致 CORS + PATCH 会导致错误?

(是的,Access-Control-Allow-Methods 设置为,GET, POST, DELETE, PATCH, PUT, OPTIONS所以我认为这不是问题。)

0 投票
1 回答
923 浏览

odata - 无法在 OData 控制器中序列化为 Delta<>

我正在实施一个ODataController. 出于与Breeze.js的兼容性原因,它是 OData V3 :

我想在中间的某个地方实现合并/补丁,如示例中所示:

出于某种原因,我收到以下错误:

没有 MediaTypeFormatter 可用于从媒体类型为“application/json”的内容中读取“Delta`1”类型的对象。

好的。Delta<>与 OData 相关,我需要一个 OData 格式化程序。

遍历格式化程序(如本页所示),它似乎不是 OData 格式化程序:

我应该注册这个格式化程序吗?不应该是自动的吗?如果我需要手动注册,如何注册?

如果我将输入参数表单更改Delta<BOOffer>BOOffer方法被调用,但由于只发送更改的属性,这不是我可以使用的。

我在 app_start 中配置我的控制器,如下所示: