繁体   English   中英

将DELETE请求用于REST中不完全删除

[英]Use DELETE request for not purely deletion in REST

我在春季对REST API的设计感到困惑。

情况

有通过调用DELETE: /v1/api/users/{userId}来删除用户的DELETE请求DELETE: /v1/api/users/{userId} ,但这不是纯粹的用户删除,我必须在删除之前将用户票证重新分配给另一个活动用户。

用户A有5张票证,当我删除用户A时,他/她的所有票证将重新分配给另一个选定的用户,然后将用户A从系统中删除。

我的初步建议

我使用最简单的解决方案

DELETE: /v1/api/users/{userIds}

并带有以下内容以接受ID进行重新分配

@RequestBody int assigneeId

我的困境

我的直觉告诉我,这不是设计DELETE请求API的好方法,删除应该只执行删除应该做的事情,我想了很长时间,但找不到一种优雅的方法。 有任何想法吗?

假设您有与用户关联的案例。

我会像这样建立一个REST API:

GET    /v1/api/user            : Return all users
GET    /v1/api/user/{id}       : Return a user
POST   /v1/api/user            : Add a user
PUT    /v1/api/user/{id}       : Update a user
DELETE /v1/api/user/{id}       : Delete a user
GET    /v1/api/user/{id}/case  : Get user's cases
PUT    /v1/api/user/{id}/case  : Reassign user's cases to another user [{id}]

如果客户致电DELETE / v1 / api / user / {id},并且该用户有个案分配给他。 您可以返回HTTP代码409 CONFLICT,指示由于继承的对象而无法删除。 客户端必须将PUT / v1 / api / user / {id} / case关联到其他人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM