跟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/

修改时间 2018-09-16

真诚赞赏,手留余香
赞赏
随机推荐
Javascript中键盘事件
MacOS launchctl 启动进程控制
CentOS 7 服务管理命令 systemctl
Vue函数式路由
MySQL汉字转换为拼音
前端生成验证码
Node.js 断言模块 Assert 模块
大白虎 2019.02.26 两小时练习
php和Javascript修改图片路径
我眼中的前端框架jQuery,Angular,React,Vue——以及我看前端架构