我脑子里想了一天这个问题,我试着阅读 RESTful Web Services Cookbook 和其他 stackoverflow 帖子,但仍然没有得到这个问题的令人信服的答案:
假设我有一个存储两个用户之间关系的数据库表,该关系表示用户 A 是否关注用户 B(例如在 Instagram/Twitter 上)。
userId|userId
------|------
userA | userB
userA | userC
....
那么现在如果用户 A 想要取消关注 用户 B,那么这个 API 应该是 DELETE
还是 POST
?
在 RESTful Web Services Cookbook 第 11 页,它说:
“DELETE
方法是幂等的。这意味着服务器必须返回响应代码 200 (OK),即使服务器在之前的请求中删除了资源。但在实践中,实现DELETE
作为幂等操作要求服务器跟踪所有已删除的资源。否则,它会返回 404(未找到)。”
这是否建议我们尽可能避免使用 DELETE
?
感谢您对这个问题的任何见解!
最佳答案
DELETE
用于删除特定资源。因此,DELETE
是否适合您取决于您是否拥有“代表”两个用户之间的关注关系的单一资源。
例如,如果您有这样的资源:
/api/userA/follows/userB
那么可以说这个资源代表了两者之间的关系。它有一个唯一的 url,所以这个 url 可以被删除,此时我希望关系被切断。
关于rest - 设计Restful API时,UNFOLLOW应该用DELETE还是POST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58158523/