关于RESTfull
关于RESTful
REST的全称是 Representational State Transfer 中文含义表现层状态转化。
符合REST规范的设计,我们称为RESTful设计。它的设计哲学主要是将服务器提供的内容实体看作一个资源,并表现在URL上。
资源
如下地址,这个地址代表了一个资源,对这个资源的操作,主要体现在HTTP请求方法上,不是体现在URL上。
/user/xxx
过去我们对用户的增删改查获取是如下这样设计的URL:
POST /user/add?username=xxx
GET /user/remove?username=xxx
POST /user/update?username=xxx
GET /user/get?username=xxx
操作行为主要体现在行为上,主要是用的请求方式是post和get。在RESTful设计中,它是如下这样的:
post /user/xxx
get /user/xxx
delete /user/xxx
put /user/xxx
它将DELETE和PUT请求方法引入设计中,参与资源的操作和更改资源的状态。
资源表现
对于资源的具体表现形态,也不在如过去一样表现在URL上的文件后缀上。
过去设计资源的格式与后缀有很大的关联,例如:
get /user/xxx.json
get /user/xxx.xml
在RESTful设计中,资源的具体格式由请求报文头中的Accept字段和服务器的支持情况来决定。
如果客户端同时接收json和xml格式的响应,那么它的accept字段值就是如下这样的:
accpet:application/json,application/xm;
靠谱的服务器端应该要估计这个字段,然后根据自己能响应的格式做出响应。在响应报文中,通过content-type字段告知客户端是什么格式,如下:
content-type:application/json
具体格式,我们称之为具体的表现。
总结
所以REST的设计就是,将服务器的内容实体当成资源,通过URL设计资源,请求方法定义资源的操作,通过Accept决定资源的表现形式。
RESTful与MVC设计并不冲突,而且是更好的改进。相比MVC,RESTful只是将HTTP请求方法也加入了路由的过程,以及在URL路径上体现得更资源化。