一、 REST 简介
- REST:即 Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用
- HTTP 协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET 用来获取资源,POST 用来新建资源,PUT 用来更新资源,DELETE 用来删除资源。
REST 请求风格如下:
/order/1 HTTP GET :得到 id = 1 的 order
/order/1 HTTP DELETE:删除 id = 1的 order
/order/1 HTTP PUT:更新id = 1的 order
/order HTTP POST:新增 order
二、 SpringMVC 配置 REST 风格 URL
- 首先要在 Web.xml 中配置 HiddenHttpMethodFilter(可以把 post 请求转化为 Put 和 DELETE 请求)
<!--
配置 org.springframework.web.filter.HiddenHttpMethodFilter: 可以把 POST 请求转为 DELETE 或 POST 请求
-->
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- DELETE 、PUT请求的表单中需要加入 名字为 _method 的隐藏域:
<form action="springmvc/testRest/1" method="post">
<input type="hidden" value="DELETE" name="_method"/>
<input type="submit" value="testRest DELETE"/>
</form>
<br><br>
<form action="springmvc/testRest/1" method="post">
<input type="hidden" value="PUT" name="_method"/>
<input type="submit" value="testRest PUT"/>
</form>
GET 和 POST 如下:
<a href="springmvc/testRest/1">testRest GET</a>
<br><br>
<form action="springmvc/testRest" method="post">
<input type="submit" value="testRest POST"/>
</form>
处理器中的配置如下:
@RequestMapping(value = "/testRest/{id}",method=RequestMethod.GET)
public String testRESTGET(@PathVariable("id") Integer id){
System.out.println("testRest GET : " + id);
return "success";
}
@RequestMapping(value = "/testRest",method=RequestMethod.POST)
public String testRESTPOST(){
System.out.println("testRest POST");
return "success";
}
@RequestMapping(value = "/testRest/{id}",method=RequestMethod.DELETE)
public String testRESTDELETE(@PathVariable("id") Integer id){
System.out.println("testRest DELETE : "+id);
return "success";
}
@RequestMapping(value = "/testRest/{id}",method=RequestMethod.PUT)
public String testRESTPUT(@PathVariable("id") Integer id){
System.out.println("testRest PUT : "+ id );
return "success";
}