gpt4 book ai didi

java - 在 REST 中使用 DELETE 请求不是纯粹的删除

转载 作者:行者123 更新时间:2023-11-30 02:31:55 25 4
gpt4 key购买 nike

对于 Spring 中的 REST API 的设计,我遇到了两难的境地。

情况

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

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

我的初步建议

我使用最简单的解决方案

删除:/v1/api/users/{userIds}

并且还可以使用以下内容来接受重新分配的 ID

@RequestBody int allocateeeId

我的困境

我的直觉告诉我,这不是设计 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 code 409 CONFLICT表示由于继承的对象而无法删除。客户端必须PUT/v1/api/user/{id}/case将这些案例与其他人关联起来。

关于java - 在 REST 中使用 DELETE 请求不是纯粹的删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44087029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com