跟 Github 学习设计不符合 CRUD 情况的 RESTful API

在实际资源操作中,总会有一些不符合 CRUD(Create-Read-Update-Delete) 的情况,一般有几种处理方法。

1. 使用 POST

为需要的动作增加一个 endpoint,使用 POST 来执行动作,比如: POST /resend 重新发送邮件。

2. 增加控制参数

添加动作相关的参数,通过修改参数来控制动作。比如一个博客网站,会有把写好的文章“发布”的功能,可以用上面的 POST /articles/{:id}/publish 方法,也可以在文章中增加 published:boolean 字段,发布的时候就是更新该字段 PUT /articles/{:id}?published=true

3. 把动作转换成资源

把动作转换成可以执行 CRUD 操作的资源, github 就是用了这种方法。

比如“喜欢”一个 gist,就增加一个 /gists/:id/star 子资源,然后对其进行操作:“喜欢”使用PUT /gists/:id/star,“取消喜欢”使用 DELETE /gists/:id/star。

另外一个例子是 Fork,这也是一个动作,但是在 gist 下面增加 forks资源,就能把动作变成 CRUD 兼容的:POST /gists/:id/forks 可以执行用户 fork 的动作。

参考:

https://blog.csdn.net/niubity/article/details/64438668
https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
https://developer.github.com/v3/

收藏
什么是 RESTful API 的幂等性
上一篇
RESTful API 执行 delete 返回204无法获取 Body
下一篇

发表评论

注册不是必须的

文章列表
JSON Web Token 入门教程
HTTP 协议入门
当后端响应的 HTTP 状态一律 200
RESTful API 执行 delete 返回204无法获取 Body