rest - 设计Restful API时,UNFOLLOW应该用DELETE还是POST?

标签 rest api api-design restful-url

我脑子里想了一天这个问题,我试着阅读 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/

相关文章:

php - 如何使用SLIM框架创建MySQL事务

rest - JIRA REST API cors

linux - Kernel32.dll 的 Linux 等价物是什么?

python - 访问 betfair API 以获取马匹价格

java - 最小的 API 与便利

c - 如何使 C 中的方法链流畅?

java - JasperReports - 如何在 Java 中使用远程 JSON 数据报告运行报告

java - 具有许多长参数的永久 REST Web 服务 URL

asp.net - 我如何阅读来自 Twitter 的帖子?

c++ - 为什么 std::thread 缺少基本功能?