Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest PATCH方法是否应返回响应正文中资源的所有字段?_Rest_Http_Httprequest_Restful Architecture_Httpverbs - Fatal编程技术网

Rest PATCH方法是否应返回响应正文中资源的所有字段?

Rest PATCH方法是否应返回响应正文中资源的所有字段?,rest,http,httprequest,restful-architecture,httpverbs,Rest,Http,Httprequest,Restful Architecture,Httpverbs,补丁方法是否应返回响应正文中资源的所有字段? 还是只返回更新的字段? 我在看书 例如,如果只返回更新的字段,则用户可以知道服务器中更新了哪些字段,而用户更新了一些字段。 **Users resource representations** name: string age: number createdon: date modifiedon: date 我不认为REST规范(顺便说一句,我认为您需要了解这一点)强制执行任何关于这一点的强大规则(您应该返回的内容)。我宁愿返回整个资源,以便

补丁方法是否应返回响应正文中资源的所有字段?
还是只返回更新的字段?

我在看书

例如,如果只返回更新的字段,则用户可以知道服务器中更新了哪些字段,而用户更新了一些字段。

**Users resource representations**
name: string
age: number
createdon: date
modifiedon: date




我不认为REST规范(顺便说一句,我认为您需要了解这一点)强制执行任何关于这一点的强大规则(您应该返回的内容)。我宁愿返回整个资源,以便客户机可以以任何需要的方式使用它。从理论上讲,客户机本身知道修补了什么(至少请求是什么)。从服务器获得确认可能不是一件小事(特别是考虑到修补程序主要用于收集),或者至少不值得。通常情况下,这应该通过。换句话说,如果客户需要一个特定的表示,它会要求一个特定的表示。请求如下所示:

PATCH /user/123
Content-Type: application/merge-patch+json
Accept: application/vnd.company.user+json
...
在这种情况下,客户机表示它想要一个完整的
用户
表示作为答案。或者它可以做到:

PATCH /user/123
Content-Type: application/merge-patch+json
Accept: application/vnd.company.object-fragment+json
...
请求某个对象的通用片段表示


如果您不想实现这两种功能,您不必同时实现,在这种情况下,您只需执行您的用例,并用
406 Not Acceptable
响应到
媒体类型,而您目前不支持这些类型。

补丁规范并不强制要求这样做


如果你想控制它,你可能需要寻找灵感。

RFC 5789第2.1节中有一个定义:尽管奇怪的是,它提到了一个文档,但没有其他内容<代码>对现有文本文件的成功修补程序响应:HTTP/1.1 204无内容位置:/file.txt ETag:“e0023aa4f”
但是,它也表示:
注意,也可以使用其他成功代码。
(除了204)
Response body Case2
{
  name: 'changedname',
  modifiedon: 2016-06-09
}
PATCH /user/123
Content-Type: application/merge-patch+json
Accept: application/vnd.company.user+json
...
PATCH /user/123
Content-Type: application/merge-patch+json
Accept: application/vnd.company.object-fragment+json
...