用了两年的RESTful接口,能意会RESTful是什么,但是很难给别人讲清楚。
前两天在知乎上看到了“怎样用通俗的语言解释REST,以及RESTful?”覃超的回答,个人觉得写得很易于理解,结合阮一峰大神的《理解RESTful架构》
记录一下学习心得。
REST和RESTful API区别
- REST:REpresentational State Transfer,直接翻译为,表现层状态转移,这里其实省略了主语资源(Resources),全称应该为
Resource Representational State Transfer,通俗来讲即资源在网络中以某种表现形式进行状态转移
REST可以理解为client和server间的一种交互方式,即client发出http请求,server端的资源发生状态转移,比如更新、删除等
- RESTful API,可以理解为server端提供的具有REST风格的接口
更详细一点的描述
@Ivony老师的一句话概括很精辟:
URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。
比如:
| URL | Method操作 | 接口含义 |
|---|---|---|
| /v1/test/articles 表示某人的文章 | GET 获取资源 | 获取某人的文章 |
| /v1/test/articles 表示某人的文章 | POST 新建资源(也可用于更新资源) | 创建一篇文章 |
| /v1/test/articles 表示某人的文章 | PUT 更新资源 | 修改文章 |
| /v1/test/articles/articleid 表示某人某篇文章 | DELETE 更新资源 | 删除某篇文章 |
URL:/v1/test/articles 表示某人的文章,类似的/v1/test/friends 表示某人的朋友信息
操作:GET、POST、PUT、DELETE用于操作相应资源
补充,RESTful API常用的另一个特征:
用 HTTP Status Code传递Server的状态信息。比如最常用的 200 表示成功,500 表示Server内部错误等
常见的不规范设计
- URL中含有操作动词
比如删除某篇文章,URL如果涉及为/v1/test/deletearticles/articleid,包含有动词delete,不符合规范
Reference
https://www.zhihu.com/question/28557115
http://www.ruanyifeng.com/blog/2011/09/restful.html