📜  HTTP补丁

📅  最后修改于: 2021-11-03 10:07:24             🧑  作者: Mango

HTTP Patch方法用于请求请求实体中的一组修改,以应用于Request-URI 识别的资源。通过对资源进行部分更改,此方法在提高互操作性和防止错误方面起着至关重要的作用。所描述的一组更改以由媒体类型标识为补丁文档的格式表示。

Patch是一种独特的方法,其中要么应用服务器请求的所有更改,要么不应用。如果使用缓存传递 PATCH 请求,则 Request-URI 标识一个或多个缓存实体。然后将条目指定为“陈旧”条目。 Patch 文档没有默认格式,需要服务器来创建适合已识别资源需求的文档。此请求方法应以幂等的方式发出,因为它可以防止在相似的时间范围内对同一资源的两个 Patch 请求发生冲突而导致不良结果。

补丁非常不同,因为服务器处理封闭的实体以修改由 Request-URI 标识的资源。封闭的实体包含一组指令,这些指令描述了修改源服务器中现有资源的当前版本的过程。这种方法会影响Request-URI 所标识的资源,也可能成为对其他资源产生副作用的原因。

示例:此示例取自RFC 5789 。它描述了对现有资源的补丁文档的使用以及针对现有文本文件收到的成功响应。作为响应,由于缺少消息正文而使用 204 代码,并且使用 ETag 响应头字段来表示通过应用补丁在 http://www.example.com/file.txt 上创建的实体。

要求:

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

回复:

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

补丁中的错误处理:

由于出现任何上述错误,补丁请求可能会失败。

  1. 格式错误的补丁文档:当客户端发送格式错误的补丁文档时会发生此错误。它由 400(错误请求)响应指定。
  2. 不支持的补丁文档:当客户端发送服务器不支持请求 URI 标识的当前资源的补丁文档格式时,会发生此错误。它由 415(不支持的媒体类型)响应指定。
  3. 无法处理的请求:当服务器认为语法有效并理解文档但无法处理请求时,会发生此错误。它由 422(不可处理实体)响应指定。
  4. 找不到资源:当 Patch文档无法应用于不存在的资源时,会发生此类错误。它由 404(未找到)响应指定。
  5. 冲突状态:当给定资源状态无法应用请求时,会发生此错误。它由 409(冲突)响应指定。
  6. 冲突修改:当客户端使用 If-Match 或 If-Unmodified-Since标头定义失败的前提条件时,会发生此错误。它由 412(前提条件失败)响应指定。当服务器检测到可能的冲突修改并且请求中没有定义前提条件时,则发送 409(冲突)响应。
  7. 并发修改:当服务器在限制下运行时无法将并发请求排队以修改资源时,会发生此错误。它由 409(冲突)响应指定。它由 409(冲突)响应指定。