RESTful

REST的全称是Representational State Transfer,中文含义为表现层状态转化。符合REST规范的设计,我们称为RESTful设计。

它的设计哲学主要将服务器端提供的内容实体看作一个资源,并表现在URL上。

比如一个用户的地址如下所示:
/users/bensheng
这个地址代表了一个资源,对这个资源的操作,主要体现在HTTP请求方法上,不是体现在URL上。过去我们队用户的增删改查或许是这样设计URL的:
POST /user/add?username=bensheng
GET /user/remove?username=bensheng
POST /user/update?username=bensheng
GET /user/get?username=bensheng

操作行为主要体现在行为上,主要使用的请求方法是POST和GET。在RESTful设计中。它是如下这样的:
POST /user/bensheng
DELETE /user/bensheng
PUT /user/bensheng
GET /user/bensheng
它将DELETE和PUT请求方法引入设计中,参与资源的操作和更改资源的状态。
对于这个资源的具体表现形态,也不再如过去一样表现在URL的文件后缀上。过去设计资源的格式与后缀有很大的关联,例如:
GET /user/bensheng.json
GET /user/bensheng.xml
在RESTful设计中,资源的具体格式由请求报头中的Accept字段和服务器端的支持情况来决定。如果客户端同时接受JSON和XML格式的响应,那么它的Accept字段值是如下这样的:
Accept:applicaton/json,application/xml
靠谱的服务器端应该要顾及这个字段,然后根据自己能响应的格式做出响应。在响应报文中,通过Content-Type:application/json

具体格式,我们称为具体的表现。所以REST的设计就是,通过URL设计资源、请求方法定义资源的操作,通过Accept决定资源的表现形式.

RESTful与MVC设计并不冲突,而且是更好的改进。相比MVC,RESTful只是将HTTP请求方法也加入了路由的过程,以及在URL路径上体现得更资源化。