"job": {
"id": 1,
"node": [1, 2, 3]
}
现在相对 node 字段增加一个元素 4,restful 的接口该如何写。
1
fangchang 2017-08-01 15:18:59 +08:00
post
/job/{id}/nodes content: 4 |
2
yujianwjj OP 你这个应该是将整个 nodes 字段替换为 4
|
3
gigantic222 2017-08-01 15:25:18 +08:00 via iPhone
Post {id}/nodes/push 加个参数当作动作吧 然后 shift pop 什么的同理
|
4
gigantic222 2017-08-01 15:27:50 +08:00 via iPhone
感觉还是直接 put 1,2,3,4 靠谱些
|
5
ansheng 2017-08-01 15:29:41 +08:00
put
/job/{id}/ node=[1, 2, 3,4] |
6
mooncakejs 2017-08-01 15:31:44 +08:00
put /job/{id}
{ "node": [1, 2, 3,4] } 如果要原子化 1 楼的吧 |
7
timwei 2017-08-01 15:35:09 +08:00
1. 将 node 看做资源:
post /job/{id}/nodes 2. 将 job 看做资源,node 看做属性: put /job/{id} |
8
yujianwjj OP @gigantic222 restful 接口好像是不推荐加动作参数。
|
10
fangchang 2017-08-01 16:10:13 +08:00 1
如果你要替换,那是对应的 put。
post 在我看来就是用来在此资源里创建并添加。 |
11
baiyi 2017-08-01 16:21:04 +08:00
看你的逻辑需求
如果是创建一个 `node` 的话就用 `POST` 如果是更新 `job` , 就是 `PUT` 注意 `POST` 和 `PUT` 的区别 `PUT` 有幂等性, 也就是说多次请求的效果是相同的 所以说, 如果你的 `node` 里 `4` 这个值不能重叠的话, 也应该是 `PUT` |
12
wizardoz 2017-08-01 16:38:49 +08:00
node 是资源,属性最好改为 nodes
put /job/1/nodes/4 |
13
paicha 2017-08-01 17:03:30 +08:00
POST /job/1/nodes/
|
14
otakustay 2017-08-01 17:04:38 +08:00
不可重复的(每次都是把第 4 个位置更新)用 PUT /jobs/1/nodes/4
可以重复的(每次都在最后增加)用 POST /jobs/1/nodes |