我正在构建一个RESTful API命令来停用用户记录。使用DELETE命令是否合适,还是应该使用PUT命令,因为记录被更新为“已停用”状态?或者这只是一种口味问题?
如果您发出的DELETE
请求的URL上的资源在该URI上不再可用,那么使用DELETE
是适当的。如果它仍然存在但状态改变了,则不适用。
例如,这是可以的(/friends/bob上的资源消失了;在此过程中在/formerfriends/bob上创建了一个新资源,但这只是附带的):
GET /friends/bob => 200 OK
GET /formerfriends/bob => 404 Not Found
DELETE /friends/bob => 204 No Content
GET /friends/bob => 410 Gone
GET /formerfriends/bob => 200 OK
这不是:
GET /friends/bob => 200 OK {"status"="friend"}
DELETE /friends/bob => 204 No Content
GET /friends/bob => 200 OK {"status"="formerfriend"}
类似这样的操作最好使用 PUT
或 PATCH
来处理:
GET /friends/bob => 200 OK {"status"="friend"}
PATCH /friends/bob {"status"="formerfriend"} => 204 No Content
GET /friends/bob => 200 OK {"status"="formerfriend"}
GET
应返回404
。 - prehfeldt404
的说明。 - Vivin PaliathDELETE
仍然是适当的。 - ChristoKiwi