ehd*_*hdv 16 rest api-design http
我正在为这个服务设计一个资源,它有一组可变属性和一组不可变属性(例如,status由服务生成而不是客户端可能更改的内容).
我需要将此包含在对GET资源请求的响应中,但如果有人随后通过PUT请求发送资源,我不知道该怎么办.
强制调用者知道哪些属性是不可变的感觉是错误的,但是默默地丢弃更新也感觉不正确.响应PUT请求的更新资源可能会解决问题,但它不完美,因为调用者不应该对其请求和服务的响应进行区分,以确定是否接受了属性.
对正确前进的任何想法?
PS我看了如何更新REST资源?但它与这个问题不同,并且促进了过于繁琐的API设计.
我建议遵循http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10中的指南.HTTP 409的定义包括以下内容:
1)由于与资源的当前状态冲突,无法完成请求.
2)响应主体应该包括足够的信息供用户识别冲突的来源.
因此,由于对不可变属性的更改是资源状态的问题,因此HTTP 409似乎适用.
至于如何将问题传达给客户,指导似乎是在响应主体中包含细节.
您还可以在表示本身(在GET上)传达属性的可变性.例如.
<MyObject>
<Foo>17</Foo>
<Bar readOnly="true">22</Bar>
....
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6446 次 |
| 最近记录: |