一.相关概念的基本理解:
在学习这个框架之前先要搞清楚j几个概念:
REST是一种设计风格(网络应用架构), 中文名称是表现层(表征)状态转转化,其中表现层指的是资源的表现层,
资源呈现出来的形式称作为表现层(比如文本可以是text格式表现,也可以是html格式,json格式,XML格式).
URI只代表资源的位置,具体表现形式, 应该在HTTP请求的头信息中用Accept和Content-Type字段指定.
状态转化:互联网通信协议http协议协议是无状态协议,意味着所有状态都保存在服务器,如果客户端要操作服务器,必须通过某种手段,让服务器端发生状态转化,这种转化是
建立在表现层之上的,故称做为表现层状态转化。
在http协议里,get,post,put,delete分别对应四种基本操作(获取资源,新建资源,更新资源,删除资源)
二.Restful架构
六个主要特点:
面向资源;(Rest架构设计以资源抽象核心展开)
可寻址;(每个资源在Web上都有自己的地址)
连通性;(每个资源非孤立的,可以通过超链接将资源关联起来)
无状态;(Rest架构的约束,同下)
统一接口;
超文本驱动;(资源之间通过超链接相互关联,超链接既代表资源之间的关系,也代表可执行状态的迁移),又叫“将超媒体作为应用状态的引擎。
三.Restful架构的优点
1.简单性;
对于开发,测试,运维人员来说都会很简单,可以充分利用Http服务端和客户端库,Web功能性测试工具,http缓存,http代理服务器,防火墙等。
2.可伸缩性;
充分利用好通信链各个位置的缓存组件,可以带来更好的可伸缩性。
3.弱耦合;
允许服务器端和客户端在很大范围内,相对独立地进化
四.Restful API 设计规范
1.协议
API与用户通信的协议,使用https协议。
2.域名
尽量将API部署在专用域名之下(存在跨域的问题)
3.版本
应该将API的版本号放入URL
4.路径
定位资源的url中要用名词
5.Http请求方法(method)
get(从服务器取出资源,一项或多项)
post(在服务器新建资源)
put(在服务器更新资源(客户端提供改变后的完整资源))
patch(在服务器更新资源(客户端提供改变的属性))
delete(从服务器端删除资源)
两个不常用:
head(获取资源的元数据)
options(获取信息,关于资源的哪些属性是客户端可以改变的)
6.过滤信息
在URL上传参的方式传递搜索条件
7.状态码
服务器向用户返回状态码和提示信息
8.错误处理
状态码是4xx时,返回错误信息,error当作key
9.返回结果
针对不同的操作,服务端向用户端返回的结果应符合以下规范:
GET /collection:返回资源对象的列表(数组) GET /collection/resource:返回单个资源对象 POST /collection:返回新生成的资源对象 PUT /collection/resource:返回完整的资源对象 PATCH /collection/resource:返回完整的资源对象 DELETE /collection/resource:返回一个空文档
10.Hypermedia API
RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。
{"link": { "rel": "collection https://www.example.com/zoos", "href": "https://api.example.com/zoos", "title": "List of zoos", "type": "application/vnd.yourformat+json" }}