问题标签 [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 回答
352 浏览

ajax - 使用 jquery ajax PATCH 方法的 Chrome 数据压缩代理错误

我正在让网页对同一个域 restful 服务进行 ajax HTTP PATCH 调用。仅适用于 chrome 浏览器的手机失败,如下所示

状态码:502 网关错误

无法通过 Chrome 数据压缩代理加载此页面。尝试重新加载页面。

这很烦人,因为我们测试过的所有桌面浏览器和移动版 NOT-chrome 都可以成功地进行 PATCH。实际上,只有在没有任何有效负载的情况下,移动 chrome 才会成功

K. 感谢这里的一些相关讨论,所以我知道原因。我希望这可以解决这个问题并尊重缓存控制标头。同时,你的出行方式是什么?

0 投票
2 回答
1421 浏览

asp.net - HTTP Patch Verb 在 Windows Server 2012 r2 上不起作用

我正在开发使用 WebApi 进行数据操作的单页应用程序。我的网站托管在 Windows Server 2008 R2 (IIS 7.5.7600.16385) 上并且工作正常,但是在迁移到 Windows Server 2012 R2 (IIS 8.5.9600.16384) HTTP PATCH VERBS 后不起作用,api 调用返回状态码 400“错误请求”。我在 web.config 中尝试了以下代码片段,但没有运气。

一次又一次地谷歌搜索,但没有任何用处,我被困在这里,任何帮助将不胜感激。

0 投票
2 回答
3134 浏览

asp.net - Web API 2 不处理整数的 PATCH 请求

我在使用 Web API 2 (.net 4.5.1) 时遇到问题,因为它似乎忽略了属性为整数的 PATCH 请求,但处理其他类型没有问题(我测试了字符串和十进制)。

我在http://playapi.azurewebsites.net/api/products设置了一个带有“产品”控制器的不安全测试 API 。如果您对该 URL 执行 GET 操作,您将得到类似此产品的内容:

'Name' 和 'Category' 都是字符串,'Price' 是 Decimal 而 'Stock' 是 Integer。

如果您发送这些请求,它们都可以工作(更新后的实体将获得 200/OK):

  • 补丁,http : //playapi.azurewebsites.net/api/products/1{"Price": 600.00}
  • 补丁,http : //playapi.azurewebsites.net/api/products/1 {"Category": "Electronics"}

但是,如果你发送这个,它会返回 200/OK,但不会进行更新并且库存保持在原始值

  • 补丁,http : //playapi.azurewebsites.net/api/products/1 {"Stock": 4}

我的控制器代码是相当标准的样板代码(来自脚手架的 ODATA 控制器,但已移至标准 API 控制器):

我的“产品”模型如下:

当我调试控制器时,我看到“补丁”对象有一个_changedProperties集合,当我执行整数请求时,其中没有项目,但是当我执行任何其他类型的请求时,它具有我更改的键。

Web API 是否应该支持对整数属性的 PATCH 请求?如果是这样,我是否需要在服务器或客户端上做任何特别的事情才能使其工作?

0 投票
1 回答
2906 浏览

django - HTTP PUT 在 django rest 框架中无法正常工作

我在 django rest 框架中使用以下代码来实现 put 和 patch 功能。PATCH (partial_update) 工作正常,但是,为 PUT 提供更少的字段不会像 PUT 请求那样替换整个资源。例如,如果数据如下所示:

如果我尝试使用以下数据进行 PUT(在http://localhost:800/api/sprints/6/上):

此调用应将描述设置为无。但是描述保留了它的价值,就好像我在做一个补丁一样。如何在更新功能中强制执行资源替换?

PS:我在初始化序列化程序以进行更新时设置了 partial=False。

视图.py:

序列化程序.py:

模型.py

0 投票
4 回答
10933 浏览

java - 使用 PATCH 和 Jersey 客户端 API 进行单元测试

我正在使用 Jersey 进行 REST API 实现。对于PATCH(部分更新),我已经实现了我自己的自定义实现,PATCH因为 Jersey 不支持它。

现在我试图弄清楚如何围绕该实现编写功能测试。我正在将球衣测试框架用于在该框架中具有该支持的其他方法(、、、、PUTPOSTGETDELETE

有没有办法可以扩展球衣测试框架实现来编写我的功能测试PATCH?如果没有,是否有任何其他可用的测试框架可用于测试我的 JerseyPATCH实现?

如果有人可以提供任何示例,那就太好了。

0 投票
2 回答
1365 浏览

python - 通过 PATCH 进行部分更新:如何解析 JSON 数据以进行 SQL 更新?

我正在服务器端实现“补丁”以部分更新我的资源。

假设我没有在 JSON 请求/响应中公开我的 SQL 数据库模式,即 JSON 中的键和表的列之间存在单独的映射,我如何最好地确定在给定 JSON 的情况下在 SQL 中更新哪些列部分更新?

例如,假设我的表有 3 列:col_acol_bcol_c,并且 JSON 键与表列之间的映射是:a -> col_a, b -> col_b, c -> col_c。给定JSON-PATCH数据:

以编程方式将此部分更新应用于col_b与我的资源对应的表的最佳方法是什么?

当然,我可以在keys_to_columns某个地方的 dict 中硬编码这些映射,并且在每次请求时patch_data,我都可以这样做:

然后用于mapped_updates构造数据库更新的 SQL 语句。如果上面抛出一个KeyError我知道请求数据是无效的,可以把它扔掉。我需要为我拥有的每个表/资源执行此操作。

我想知道是否有更好的方法。

0 投票
1 回答
2027 浏览

http - HTTP 方法“PATCH”可以安全地跨代理等使用吗?

假设我的服务器公开了一个使用RFC 5789PATCH引入的方法的基于 HTTP 的 API 。公司防火墙、代理、缓存、家长控制过滤器等后面的客户端(浏览器或其他)是否有可能在使用此方法时遇到任何问题?如果是这样,这种可能性有多大?

鉴于这PATCH不是原始 HTTP 规范的一部分,而是稍后介绍的,我可以想象某些程序会因为“无效”方法而简单地拒绝此类请求。另一方面,我希望这样的软件可以简单地通过所有东西,并且最多对某些 HTTP 方法应用一些限制,例如POST(例如不缓存其结果)。

请注意,我不询问PATCH服务器端或浏览器内的支持,而只是询问我既不知道也不控制的客户端和服务器之间的组件。此外,PATCH对于 API 本身是否是一个好主意的问题超出了这个问题的范围。

0 投票
1 回答
692 浏览

c# - Azure AD 使用补丁调用更改密码

我目前正在用 C# 开发一个 Web 应用程序。我正在使用 Azure AD 来存储用户信息,因此如果用户愿意,我希望能够在某个时候更改密码。

目前我更改密码的方式是使用 http-patch 调用https://graph.windows.net/ {tenentId}/users/{userkey}?api-version=1.5 ,json 如下所示:

上周这工作得很好。但是当我今天尝试时它没有工作。有任何想法吗?

0 投票
9 回答
366255 浏览

http - PUT、POST 和 PATCH 有什么区别?

HTTP 协议中的 PUT、POST 和 PATCH 方法有什么区别?

0 投票
2 回答
3948 浏览

java - 如何在 CXF 中使用 PATCH 方法

我正在尝试使用 JAX-RS 的 CXF 实现在我的客户端中使用 PATCH 方法。起初我将 PATCH 注释定义为

参考这里写的: How to have a @PATCH annotation for JAX-RS?

然后我发现@PATCH 被添加到 CXF 3.1.2 中,所以我在我的 maven 的 pom.xml 中更改了版本,确实有public @interface PATCH里面,package org.apache.cxf.jaxrs.ext;代码实际上看起来和我上面发布的完全一样。

但是,当我尝试在我的服务定义上使用此注释时

我最终得到了java.net.ProtocolException: Invalid HTTP method: PATCH我在上面发布的问题链接中所说的。他们与 Jersey 讨论了一些解决方案,但是我可以在 CXF 中做什么,以便我可以使用:

所以我有几个问题:

  1. 我怎样才能使这项工作?不,我需要编写自定义 CXF 拦截器吗?
  2. 如果它不起作用,他们为什么要将 PATCH 注释添加到 CXF 中?
  3. 另一个主题中的一些人说,上面提到的 PATCH 注释定义对他们有用。怎么会 ?它是否只会在客户端造成麻烦,如果是这样,为什么会这样?
  4. 为什么我在 CXF 文档中找不到这个注释?我在http://cxf.apache.org/javadoc/latest/查看了 org.apache.cxf.jaxrs.ext 包,但没有看到任何补丁。然而在最新的 cxf 3.1.2 中,我真的可以在这个包中找到它。