Nig*_*iri 15 rest http httprequest http-verbs restful-architecture
PATCH方法应该返回响应主体中资源的所有字段吗?
或者它应该只返回更新的字段?
我正在读这个
例如,如果它仅返回更新的字段,则用户可以知道在服务器中更新了哪些字段,而用户更新了一些字段.
**Users resource representations**
name: string
age: number
createdon: date
modifiedon: date
Run Code Online (Sandbox Code Playgroud)
PATCH /users/{userId}
Request body
{
name: 'changedname',
}
Run Code Online (Sandbox Code Playgroud)
Response body Case1
{
name: 'changedname',
age: 20,
createdon: 2016-01-01,
modifiedon: 2016-06-09
}
Run Code Online (Sandbox Code Playgroud)
Response body Case2
{
name: 'changedname',
modifiedon: 2016-06-09
}
Run Code Online (Sandbox Code Playgroud)
Rob*_*gam 14
通常这应该通过内容协商来处理.换句话说,如果需要,客户端会要求特定的表示.请求看起来像这样:
PATCH /user/123
Content-Type: application/merge-patch+json
Accept: application/vnd.company.user+json
...
Run Code Online (Sandbox Code Playgroud)
在这种情况下,客户端表示它想要一个完整的user表示作为答案.或者它可以做:
PATCH /user/123
Content-Type: application/merge-patch+json
Accept: application/vnd.company.object-fragment+json
...
Run Code Online (Sandbox Code Playgroud)
要求一些对象的通用片段表示.
你不必同时实现,如果你不想,在这种情况下,你只是做你的使用情况,并作出反应406 Not Acceptable到media-types你不暂时支持.
我不认为 REST 规范(顺便说一句,我认为你需要为此查看RFC 6902 )强制执行任何围绕此的严格规则(你应该返回什么)。我宁愿返回整个资源,以便客户端可以以任何需要的方式使用它。理论上,客户端本身知道修补了什么(至少知道请求是什么)。从服务器获取确认可能并不简单(特别是考虑到 PATCH 主要用于集合),或者至少不值得。
| 归档时间: |
|
| 查看次数: |
13287 次 |
| 最近记录: |