Restful API是什么?初探Restful API?为什么要用Restful API?传统接口写法与Restful API接口写法区别,带着这些问题我们来具体了解下Restful API:
目录
什么是Restful API?
为什么用Restful API?
Restful API是怎么定义的?定义规则方法:
传统接口写法与Restful API 接口写法区别:
什么是Restful API?
Restful API 从字面就可以知道,他是rest式的接口,所以就要先了解什么是rest。rest 不是一个技术,也不是一个协议。rest 指的是一组架构约束条件和原则,提供了一个新的架构设计思路,满足这些约束条件和原则的应用程序或设计就是 RESTful。在REST规则中,有两个基础概念:对象、行为。对象就是我们要操作的对象,例如添加用户的操作,那么对象就是user
行为有4种常用的:查看、创建、编辑、删除
rest的提出者很巧妙的利用http现有方法来对应这4种行为:
- GET - 查看
- POST - 创建
- PUT - 编辑
- DELETE - 删除
为什么用Restful API?
例如常用的MVC结构中,前后端的融合还是比较紧密的,用户访问一个网址,例如:http://www.91tuoke.com/a.php,请求先发送到动态php处理,php中处理逻辑,然后使用页面模板来输出显示给用户。
以前用户主要就是用浏览器访问,这样的结构没什么问题,但现在移动客户端越来越重要,显然不能使用这个结构,需要为移动客户端开发接口。
RESTful API 就可以通过一套统一的接口为所有客户端提供web服务,实现前后端分离。
再比如在一个大型系统架构设计中,可能是多种开发语言一起工作,使用 RESTful API 就可以完全不关心开发语言,以标准的接口来协同工作
Restful API是怎么定义的?定义规则方法:
下面通过几个示例了解下Restful API的定义方式,其实就是操作:
添加(POST)
查询(GET)
更新编辑修改(GET/POST/PUT)
删除(DELETE)
(1)查看所有任务
1 | GET http://www.gookang.com/tasks |
(2)新建一个任务
1 | POST http://www.gookang.com/tasks |
传递Data: title = Foobar
(3)根据ID查看一个任务
1 | GET http://www.gookang.com/tasks/123 |
(4)更新任务
1 | PUT http://www.gookang.com/tasks/123 |
传递Data: title = New
(5)删除任务
1 | DELETE http://www.nongyejing.com/tasks/123 |
可以看到Restful API的风格非常简洁、统一、明确
例如查看操作,用普通方式的话,定义方式是任意的,如:
1 | http://www.haopin.org/listall_tasks |
‘listall_tasks’ 就是随意定义的,通过这个名字才可以看出是查看全部的意思,如果开发人员用了一个没有明确意义的名字,那就需要看文档或者代码才能知道含义了
而Restful API 通过 GET 方法就知道是查看操作,通过tasks就知道查看的对象是什么。
传统接口写法与Restful API 接口写法区别:
说到API接口设计有的喜欢用Web Service,有的喜欢用WCF,当然也有还在用最原始的ashx,aspx页面的。无论采用什么方式能很好的满足业务需求就ok,但是不同的方式在扩展性、易用性,可维护性都有一定的差别。如今移动移动互联网正如火如荼,各种终端,各种平台,各种开发语言也是层出不穷,所以要设计出能满足这些要求的API也就显得至关重要了。
一个文件操作接口,传统模式:
api/getfile.php - 获取文件信息,下载文件
api/uploadfile.php - 上传创建文件
api/deletefile.php - 删除文件
RESTful:
api/file 只需要这一个接口
GET 方式请求 api/file - 获取文件信息,下载文件
POST 方式请求 api/file - 上传创建文件
DELETE 方式请求 api/file - 删除某个文件
这样一来简化了API接口的操作性和统一性。