什么是Restfull API


Restfull API 从字面就可以知道,他是rest式的接口,所以就要先了解什么是rest


rest 不是一个技术,也不是一个协议


rest 指的是一组架构约束条件和原则,提供了一个新的架构设计思路,满足这些约束条件和原则的应用程序或设计就是 RESTful


在REST规则中,有两个基础概念:对象、行为


对象就是我们要操作的对象,例如添加用户的操作,那么对象就是user


行为有4种常用的:查看、创建、编辑、删除


rest的提出者很巧妙的利用http现有方法来对应这4种行为:


GET - 查看

POST - 创建

PUT - 编辑

DELETE - 删除


为什么用Restfull API


例如常用的MVC结构中,前后端的融合还是比较紧密的,用户访问一个网址,例如 http://test.com/a.php,请求先发送到动态php处理,php中处理逻辑,然后使用页面模板来输出显示给用户


以前用户主要就是用浏览器访问,这样的结构没什么问题,但现在移动客户端越来越重要,显然不能使用这个结构,需要为移动客户端开发接口


RESTful API 就可以通过一套统一的接口为所有客户端提供web服务,实现前后端分离


再比如在一个大型系统中,可能是多种开发语言一起工作,使用 RESTful API 就可以完全不关心开发语言,以标准的接口来协同工作


Restfull API是怎么定义的


下面通过几个示例了解下Restfull API的定义方式


(1)查看所有任务


GET http://test.com/tasks


(2)新建一个任务


POST http://test.com/tasks


Data: title = Foobar


(3)根据ID查看一个任务


GET http://test.com/tasks/123


(4)更新任务


PUT http://test.com/tasks/123


Data: title = New


(5)删除任务


DELETE http://test.com/tasks/123



可以看到Restfull API的风格非常简洁、统一、明确


例如查看操作,用普通方式的话,定义方式是任意的,如:


http://test.com/listall_tasks


'listall_tasks' 就是随意定义的,通过这个名字才可以看出是查看全部的意思,如果开发人员用了一个没有明确意义的名字,那就需要看文档或者代码才能知道含义了


而Restfull API 通过 GET 方法就知道是查看操作,通过tasks就知道查看的对象是什么