Path: blob/main/files/en-us/web/http/methods/patch/index.md
6517 views
------{{HTTPSidebar}}
The HTTP PATCH request method applies partial modifications to a resource.
PATCH is somewhat analogous to the "update" concept found in {{Glossary("CRUD")}} (in general, HTTP is different than {{Glossary("CRUD")}}, and the two should not be confused).
A PATCH request is considered a set of instructions on how to modify a resource. Contrast this with {{HTTPMethod("PUT")}}; which is a complete representation of a resource.
A PATCH is not necessarily idempotent, although it can be. Contrast this with {{HTTPMethod("PUT")}}; which is always idempotent. The word "idempotent" means that any number of repeated, identical requests will leave the resource in the same state. For example if an auto-incrementing counter field is an integral part of the resource, then a {{HTTPMethod("PUT")}} will naturally overwrite it (since it overwrites everything), but not necessarily so for PATCH.
PATCH (like {{HTTPMethod("POST")}}) may have side-effects on other resources.
To find out whether a server supports PATCH, a server can advertise its support by adding it to the list in the {{HTTPHeader("Allow")}} or {{HTTPHeader("Access-Control-Allow-Methods")}} (for CORS) response headers.
Another (implicit) indication that PATCH is allowed, is the presence of the {{HTTPHeader("Accept-Patch")}} header, which specifies the patch document formats accepted by the server.
| Request has body | Yes |
|---|---|
| Successful response has body | Yes |
| {{Glossary("Safe/HTTP", "Safe")}} | No |
| {{Glossary("Idempotent")}} | No |
| {{Glossary("Cacheable")}} | No |
| Allowed in HTML forms | No |
Syntax
Example
Request
Response
A successful response is indicated by any 2xx status code.
In the example below a {{HTTPStatus("204")}} response code is used, because the response does not carry a payload body. A {{HTTPStatus("200")}} response could have contained a payload body.
Specifications
{{Specifications}}
See also
{{HTTPStatus("204")}}
{{HTTPHeader("Allow")}}, {{HTTPHeader("Access-Control-Allow-Methods")}}
{{HTTPHeader("Accept-Patch")}} – specifies the patch document formats accepted by the server.