1. 基本原理
表现性(Representational) -- REST资源可以用各种形式来表现,如XML, JSON等最合适资源使用者的任意形式
状态(State)-- 当 使用REST的时候, 我们更关注资源状态而不是对资源的行为
转移(Transfer) -- 以一种表现性形式从一个应用转移到另一个
REST简单来说是将资源的状态以最合适的形式从服务器端转移到客户端(或反之)。
2. 特点
对比:
非REST一段代码:
@RequestMapping(value="/findSomething.jsp",method=RequestMethod.GET)
设置地址的find*.jsp中的find是个动词, 是种动作, 而REST强调的是状态。 而且*.jsp把前端页面限制为只能是jsp页面。
REST代码:
@RequestMapping(value="/Something",method=RequestMethod.GET)
查找某些东西用GET, 如果是更新的话,如下:@RequestMapping(value="/Something",method=RequestMethod.PUT)
删除@RequestMapping(value="/Something",method=RequestMethod.DELETE)
新增
@RequestMapping(value="/Something",method=RequestMethod.POST)
RESTful URL从左到右读, 是一个抽象------>具象的过程。
RESTful URL的路径是参数化的(配合@PathVariable):
@RequestMapping(value = "/{group}/{name}", method = RequestMethod.GET)
而RESTless是使用查询参数:
@RequestMapping(value = "findSomething", method = RequestMethod.GET)
url ---- http://hostname:port/findSomething?group="007"&name="Jams"web.xml:
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<servlet-name>appServlet</servlet-name>
</filter-mapping>