RESTful风格
1、简介
将服务器上的所有内容都看成资源,是一种网页开发的规范
2、REST规范具体要求
①四种请求方式对应四种常见操作
REST 风格主张在项目设计、开发过程中,具体的操作符合HTTP协议定义的请求方式的语义。
操作 | 请求方式 |
---|---|
查询操作 | GET |
保存操作 | POST |
删除操作 | DELETE |
更新操作 | PUT |
②URL地址风格
REST风格提倡URL地址使用统一的风格设计,从前到后各个单词使用斜杠分开,不使用问号键值对方式携带请求参数,而是将要发送给服务器的数据作为URL地址的一部分,以保证整体风格的一致性。还有一点是不要使用请求扩展名。
传统 URL 地址 | REST 风格地址 |
---|---|
/remove/emp?id=5 | /emp/5 |
例:
操作 传统风格 REST 风格 保存 /CRUD/saveEmp URL 地址:/CRUD/emp
请求方式:POST删除 /CRUD/removeEmp?empId=2 URL 地址:/CRUD/emp/2
请求方式:DELETE更新 /CRUD/updateEmp URL 地址:/CRUD/emp
请求方式:PUT查询(表单回显) /CRUD/editEmp?empId=2 URL 地址:/CRUD/emp/2
请求方式:GET
3、示例
1.查询(GET)和增加(POST)
controller文件中
//查询所有用户信息-->/CRUD/user请求方式:GET
@RequestMapping(value = "/CRUD/user",method = RequestMethod.GET)
public String getAllUser(){
System.out.println("查询所有用户");
return "success";
}
//根据id查询用户信息-->/CRUD/user/2请求方式:GET
@RequestMapping(value = "/CRUD/user/{id}",method = RequestMethod.GET)
//绑定路径中的数字id
public String getUserById(@PathVariable("id") Integer id){
System.out.println("根据id查询用户");
return "success";
}
@RequestMapping(value = "/CRUD/user",method = RequestMethod.POST)
public String InsertUser(){
System.out.println("添加用户信息");
return "success";
}
<a th:href="@{/CRUD/user}">查询所有用户</a>
<a th:href="@{/CRUD/user/1}">查询id为1的用户</a>
<form th:action="@{/CRUD/user}" method="post">
<input type="submit" value="Add User">
</form>
2.修改(PUT)和删除(DELETE)
浏览器只能发送GET和POST,通过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>
<url-pattern>/*</url-pattern>
</filter-mapping>
发送PUT和DELETE等特殊请求
<form th:action="@{/CRUD/user/2}" method="post">
<!-- 设置name="_method" value="?" 代表请求方式 -->
<input type="hidden" name="_method" value="put">
<input type="submit" value="Add User">
</form>
在controller层进行处理
@RequestMapping(value = "/CRUD/user/{id}",method = RequestMethod.DELETE)
public String DeleteUser(@PathVariable("id") Integer id){
System.out.println("删除用户信息id:"+ id);
return "success";
}