跟 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
下一篇

发表评论

注册不是必须的

admin
101 文章
0 评论
0 收藏
热门文章