一.首先,什么是REST?
REST从字面上讲叫做Representational State Transfer,翻译成表现层状态转移,但是一般在翻译的时候,前面会加一个Resource,即Resource Representational State Transfer,即为资源表现层状态转移.用人话讲就是:客户端通过HTTP请求,对服务器端的资源进行操作,实现"表现层(使用HTTP动词去促使服务器端资源的)状态发生改变". 二. 什么是RESTful?
RESTful是代表REST化,或者说设计遵从REST架构的,所以要了解RESTful就需要了解REST.
三.我们为什么要使用RESTful的风格来开发接口?
先从传统设计接口的方式来看:
新增一个员工:http://www.demo.cn/finance/employee/createEmp
删除一个员工:http://www.demo.cn/finance/employee/deleteEmp
修改一个员工:http://www.demo.cn/finance/employee/updateEmp
获取员工列表:http://www.demo.cn/finance/employee/listEmp
现在我们发现:一个非常简单的需求产生的问题:
1.每一个操作,都需要一个独立的url去操作,因为我们对员工的动作都需要反映在url里面.
2.会产生大量的url,非常不方便接口的维护和文档的维护
3.如果有不同的响应方式,我们可能需要额外的参数,甚至不同的url来描述
4.请求参数包含在请求地址中,无法针对性做缓存
如果我们使用RESTful风格的接口,那么我们可以如下做:
新增一个员工:POST http://www.demo.cn/finance/employee
删除一个员工:DELETE http://www.demo.cn/finance/employee
修改一个员工:PATCH http://www.demo.cn/finance/employee
获取员工列表:GET http://www.demo.cn/finance/employee
可以发现,我们通过HTTP的请求方式来给予这些请求的不同含义,动作设计和示例如下:
下面是一个简单的实践,我们可以使用去哪儿网开源的YApi来帮助我们管理接口并测试: