PATCH

HTTP PATCH 请求方法用于对资源进行部分修改。

PATCH 有点类似于 CRUD 中的“更新”概念(一般来说,HTTP 与 CRUD 不同,两者不应混淆)。

PATCH 请求是一组关于如何修改资源的指令,与 PUT 形成对比;后者是一个资源的完整表述。

PATCH 并不需要是幂等的,这与 PUT 形成鲜明对比;后者始终是幂等的。“幂等(idempotent)”一词意味着,任何数量的重复、相同的请求都会使资源处于相同的状态。例如,如果一个自动递增的计数器字段是资源的一个组成部分,那么 PUT 将自然地覆盖它(因为它覆盖一切),但对于 PATCH 则不一定如此。

PATCHPOST 一样,可能会对其他资源产生副作用。

要知道一个服务器是否支持 PATCH,服务器可以通过将其加入 AllowAccess-Control-Allow-Methods(用于 CORS)响应标头中的列表来宣告其支持。

另外一个(隐式)表明允许 PATCH 方法的指示为 Accept-Patch 标头的存在,这个标头明确了服务器端可以接受补丁文档的格式。

请求是否有主体
成功的响应是否有主体 可能有
安全
幂等
可缓存
允许在 HTML 表单中使用 不允许

语法

http
PATCH /file.txt HTTP/1.1

示例

请求

http
PATCH /file.txt HTTP/1.1
Host: www.example.com
Content-Type: application/example
If-Match: "e0023aa4e"
Content-Length: 100

[描述变化情况]

响应

任何 2xx 状态码都代表成功的响应。

以下示例使用了 204 响应码,因为响应不携带任何主体。200 响应可能携带了响应体。

http
HTTP/1.1 204 No Content
Content-Location: /file.txt
ETag: "e0023aa4f"

规范

Specification
RFC 5789

参见