我最後都是混用。只有簡單的 CRUD 才會用 REST,其他很難用 resource 表達的通通用動詞 + POST (就是 RPC)
不過 url 都會是小寫英文 和 -
就是了。然後就算是 RPC , url 也會傾向用 /approve/user/{id}
而不是 /approveUser?id={id}
不過 url 都會是小寫英文 和 - 就是了。然後就算是 RPC , url 也會傾向用
/approve/user/{id}
而不是/approveUser?id={id}
我覺得如果 url 是 /user/{id}/approve
+ PATCH 應該就符合 REST 了吧
純 rest 要用名詞, 所以要改寫成 /user/{id}/approval
。
要講究純 rest 到最後變得像是在考文法一樣, 咬文嚼字, 我個人是不太喜歡浪費時間在這種地方啦。
而且用 PATCH
就對了嗎?approve user 這個動作有可能改到三個 Table 以上,不一定是只改 user.approved
這個 boolean flag 而已啊。
純 rest 要用名詞, 所以要改寫成 /user/{id}/approval。
我是有看到用動詞的例子:
- Best practices for RESTful web service design1:第 9 頁提到 Use nouns for non-resource actions,但是例子卻是給 convert, calculate (動詞)?
- RESTful 與 Rails2:這裡有提到
/bookmarks/:id/edit
(edit 也是動詞)
要講究純 rest 到最後變得像是在考文法一樣, 咬文嚼字, 我個人是不太喜歡浪費時間在這種地方啦。
說的也是 ...
而且用
PATCH
就對了嗎?approve user 這個動作有可能改到三個 Table 以上,不一定是只改user.approved
這個 boolean flag 而已啊。
我只是覺得 approve 這個動作應該只是在 update 資料,所以用 PATCH
比較合適 ...
不過改三個 Table 有可能代表了同時修改三個資源,這部份 REST 目前也沒有規範到 ...
就像您說的那樣,最後會是 REST 和 RPC 混用吧