Restful API
什么是Restful API?
Restful API 从字面就可以知道,他是rest式的接口,所以就要先了解什么是rest。rest 不是一个技术,也不是一个协议。rest 指的是一组架构约束条件和原则,提供了一个新的架构设计思路,满足这些约束条件和原则的应用程序或设计就是 RESTful。在REST规则中,有两个基础概念:对象、行为。对象就是我们要操作的对象,例如添加用户的操作,那么对象就是user
行为有4种常用的:查看、创建、编辑、删除
rest的提出者很巧妙的利用http现有方法来对应这4种行为:
GET - 查看 POST - 创建 PUT - 编辑 DELETE - 删除
为什么用Restful API?
例如常用的MVC结构中,前后端的融合还是比较紧密的,用户访问一个网址,例如:www.91tuoke.com/a.php,请求先发送到动态php处理,php中处理逻辑,然后使用页面模板来输出显示给用户。
以前用户主要就是用浏览器访问,这样的结构没什么问题,但现在移动客户端越来越重要,显然不能使用这个结构,需要为移动客户端开发接口。
RESTful API 就可以通过一套统一的接口为所有客户端提供web服务,实现前后端分离。
再比如在一个大型系统架构设计中,可能是多种开发语言一起工作,使用 RESTful API 就可以完全不关心开发语言,以标准的接口来协同工作
Restful API是怎么定义的?定义规则方法:
添加(POST) 查询(GET) 更新编辑修改(GET/POST/PUT) 删除(DELETE)
(1)查看所有任务
GET http://www.gookang.com/tasks
(2)新建一个任务
POST http://www.gookang.com/tasks
传递Data: title = Foobar
(3)根据ID查看一个任务
GET http://www.gookang.com/tasks/123
(4)更新任务
PUT http://www.gookang.com/tasks/123
传递Data: title = New
(5)删除任务
DELETE http://www.nongyejing.com/tasks/123
传统接口写法与Restful API 接口写法区别:
一个文件操作接口,传统模式:
api/getfile.php - 获取文件信息,下载文件 api/uploadfile.php - 上传创建文件 api/deletefile.php - 删除文件
RESTful:
api/file 只需要这一个接口
GET 方式请求 api/file - 获取文件信息,下载文件 POST 方式请求 api/file - 上传创建文件 DELETE 方式请求 api/file - 删除某个文件
get 和post 的区别
POST和GET都是向服务器提交数据,并且都会从服务器获取数据。
区别:
1、传送方式:get通过地址栏传输,post通过报文传输。
2、传送长度:get参数有长度限制(受限于url长度),而post无限制
3、GET和POST还有一个重大区别,简单的说:
GET产生一个TCP数据包;POST产生两个TCP数据包
长的说:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。
因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?
- GET与POST都有自己的语义,不能随便混用。
- 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
- 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。