6

如果将 PATCH 请求应用于尚不存在的资源,是否允许创建资源,或者在这种情况下我是否需要单独的 POST/PUT 请求?

请求将PATCH转到资源的 URL,例如:PATCH /object/1234. 如果 ID 为 1234 的对象在数据库中,我将创建它,否则我将更新它。

PATCH请求不包含所有字段,这就是我不使用PUT.

4

2 回答 2

5

RFC 5789声明 PATCH 应该用于“修改现有的 HTTP 资源”。为了遵守 HTTP 标准,最好实现 POST/PUT 请求。

于 2016-12-23T18:55:22.080 回答
1

虽然服务器可以创建新资源(如 Heiko 的回答中所述),但建议您仅实现 conditional PATCH,其中客户端发送If-Unmodified-SinceorIf-Match标头,确保补丁仅应用于客户端认为他们的资源版本正在编辑。条件PATCH请求排除了编辑非现有资源的想法。如果客户端尝试在没有前置条件的情况下发送请求,则正确的响应是 428 Precondition Required。请参阅RFC 6585

于 2016-12-24T17:47:53.587 回答