一.相关概念的基本理解:html
在学习这个框架以前先要搞清楚几个概念:json
REST是一种设计风格(网络应用架构), 中文名称是表现层(表征)状态转转化,其中表现层指的是资源的表现层,api
资源呈现出来的形式称做为表现层(好比文本能够是text格式表现,也能够是html格式,json格式,XML格式).跨域
URI只表明资源的位置,具体表现形式, 应该在HTTP请求的头信息中用Accept和Content-Type字段指定.数组
状态转化:互联网通讯协议http协议协议是无状态协议,意味着全部状态都保存在服务器,若是客户端要操做服务器,必须经过某种手段,让服务器端发生状态转化,这种转化缓存
是创建在表现层之上的,故称作为表现层状态转化。服务器
在http协议里,get,post,put,delete分别对应四种基本操做(获取资源,新建资源,更新资源,删除资源)网络
二.Restful架构架构
六个主要特色:app
面向资源;(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" }}