我可以通过 REST 完全访问 foo 资源:
{
"name": "foo",
"tags": [
"tag01",
"tag02",
"tag03"
]
}
我想删除 tags
数组中的 tag01
。
通常我会在没有 tag01
的情况下 GET\foo
和 PUT\foo
返回。
在这种情况下,这个对象很小,所以没问题。
但让我们假设它要大得多。对于这种情况,我不喜欢下载和上传这些数据。经过一些谷歌研究,我发现了 http PATCH .我看起来正是我需要的。
我现在以PATCH方式请求
PATCH /foo/tags?op={add|delete}
要删除我会使用:
PATCH /foo/tags?op=delete
有了这些数据:
{
"value": "tag01"
}
现在有两个我不喜欢的想法:
- 查询字段
op
- 是否有一些在 rfc 或 smth 中描述的默认名称。像这样 - 请求数据中的成员
value
- 这也是自由选择的名称
我觉得不对。
有没有其他方法可以通过 REST 操作数组?
在 PATCH 方式中是否有一些命名约定?
最佳答案
PATCH
的负载应该包含 "instructions describing how a resource currently residing on the origin server should be modified to produce a new version" .所有信息都应在有效负载中传递,而不是在查询参数中传递。
例如你可以发送:
PATCH /foo
[
{
"op": "remove",
"path": "/tags/0"
}
]
路径/tags/0
指向数组的第一个元素。其余元素应向左移动。
参见 JSON Patch draft了解更多详情。
关于web-services - REST 数组操作最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24011490/