Spring MVC开发RESTful风格的URI
一、写在前面
RESTful结构可参考博文:https://blog.csdn.net/codejas/article/details/79799386
我们知道在HTTP 协议中,有四种操作方式的动作:GET、POST、PUT和DELETE,分别对应四种基本的操作。GET 用来获取资源,POST 用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE 用来删除资源。
关于RESTful 风格的URI 标准写法如下:
GET:/restUrl/{id}
POST:/restUrl
PUT:/restUrl/{id}
DELETE:/restUrl/{id}
浏览器的form 表单只支持GET 与POST 方式的请求,对于PUT与DELETE 并不支持,在Spring MVC中提供了一个过滤器(HiddenHttpMethodFilter
),可以通过该过滤器将POST 形式的请求转化为PUT 与DELETE 形式的请求。
二、在Spring MVC中开发RESTful风格的URI
2.1步骤
1.在web.xml
中配置HiddenHttpMethodFilter
过滤器
2.将POST 请求转换为DELETE 与PUT请求,即在发送POST 请求时,需要携带一个name="_method"
的隐藏域,值为对应的DELETE 与PUT
。
2.2代码实现
1.在web.xml
中配置HiddenHttpMethodFilter
过滤器
<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>
2.编写前端代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>test</title>
</head>
<body>
<!--
默认为'GET' 请求
-->
<a href="user/1">test GET</a><br>
<!--
通过表单指定请求的格式为'POST'
-->
<form action="user" method="post">
<input type="submit" value="test POST"/>
</form><br>
<!--
通过隐藏域将表单'POST' 请求格式转化为'PUT'
-->
<form action="user/1" method="post">
<input type="hidden" name="_method" value="PUT"/>
<input type="submit" value="test POST"/>
</form><br>
<!--
通过隐藏域将表单'POST' 请求格式转化为'DELETE'
-->
<form action="user/1" method="post">
<input type="hidden" name="_method" value="DELETE"/>
<input type="submit" value="test POST"/>
</form><br>
</body>
</html>
3.编写控制器代码
@Controller
public class TestController {
private static final String SUCCESS = "success";
/**
* 根据id 获取用户信息
* @RequestMapping 默认处理'GET'形式的请求
* @PathVariable 用于获取请求占位符中的值,并绑定到'id' 中
*/
@RequestMapping("/user/{id}")
public String testGet(@PathVariable(value = "id")Integer id) {
// 可以根据id 调用对应的服务接口 ........
return SUCCESS;
}
/**
* 新增用户,可以指定接收的参数类型
* 这里简单的实现一下
* 在@RequestMapping 中指定方法为'POST'
*/
@RequestMapping(value = "/user", method = RequestMethod.POST)
public String testPost(){
// 在开发的过程中可以根据需求调用对应的服务接口
return SUCCESS;
}
/**
* 根据id 修改用户信息
* 在@RequestMapping 中指定方法为'PUT'
*/
@RequestMapping(value = "/user/{id}", method = RequestMethod.PUT)
public String testPut(@PathVariable(value = "id")Integer id) {
// 根据id 调用对应的服务接口 ........
return SUCCESS;
}
/**
* 根据id 删除用户
* 在@RequestMapping 中指定方法为'DELETE'
*/
@RequestMapping(value = "/user/{id}", method = RequestMethod.DELETE)
public String testDelete(@PathVariable(value = "id")Integer id) {
// 根据id 调用对应的服务接口 ........
return SUCCESS;
}
}
三、总结
通过上面的例子我们应该知道,对于同一组(比如操作用户)增删改查的操作,我们可以统一它们的URI,可能这些URI 是相同的,但是却代表着不同的资源,通过对应的请求方式从而执行增删改查操作。使用RESTful 风格的架构,可以使设计的软件更简洁,更有层次,更易于实现缓存机制等。
上一篇: spring mvc完成restful风格的url
下一篇: RESTful 架构
推荐阅读
-
Spring MVC开发RESTful风格的URI
-
spring mvc完成restful风格的url
-
Spring MVC--RestFul风格
-
spring mvc mybatis实现restful风格框架
-
j2ee 简单网站搭建:(二)添加和配置 spring + spring-mvc 的 mvc 开发环境
-
详解Spring框架之基于Restful风格实现的SpringMVC
-
如何利用Spring MVC实现RESTful风格
-
如何利用Spring MVC实现RESTful风格
-
Spring Boot +mybatis +oracle开发restful风格的查询接口
-
Spring MVC风格的restful接口开发