我正在爲一個像「jobs」這樣的概念設計一套RESTful API。作業的模式是這樣的:這兩個RESTful API設計哪個更好?
Job: {
id: 1,
name: "Brew coffee",
status: "paused" | "running" | "finished",
progress: 0.75
}
及以下RESTful的原則,對/api/jobs
通過HTTP動詞客戶CRUDs工作。例如,initalizing新工作
POST /api/jobs
--------------
Request body: {
name: "Push button"
}
---------------
Response status: 200 OK
Response body: {
id: 2,
name: "Cook dinner",
status: "running",
progress: 0
}
和訪問這個工作
GET /api/jobs/2
--------------
Request body: {}
---------------
Response status: 200 OK
Response body: {
id: 2,
name: "Cook dinner",
status: "running",
progress: 0.5
}
我的問題是,我應該怎麼設計的API,如「暫停」的行動?關上我的頭我在二個 選項之間進行考慮:
一種選擇是將其設計爲PATCH
請求,並宣佈直接結束狀態我想,像這樣
PATCH /api/jobs/2
--------------
Request body: {
status: "paused"
}
---------------
Response status: 200 OK
Response body: {
id: 2,
name: "Cook dinner",
status: "paused",
progress: 0.65
}
的另一種選擇是將其設計爲POST
要求,並聲明行動我想,像這樣
POST /api/jobs/2
--------------
Request body: {
action: "pause"
}
---------------
Response status: 200 OK
Response body: {
// same as above
}
考慮在未來,我可能會執行其他操作,如「簡歷」,「優先級排序」,「優先排序」等,您認爲哪兩個選項更好?還是有更好的做法?
你問的問題的答案並不重要......但如果來自GET/api/jobs/2的響應沒有告訴你答案,那麼它不是REST。很抱歉讓所有的Roy Fielding在你身上,但是如果你真的不在乎它是不是REST,那麼只要做一些符合你的要求的事。 –