本文已参与「新人创作礼」活动,一起开启掘金创作之路。
REST风格
1. 快速入门
按照REST风格访问资源时使用==行为动作==区分对资源进行了何种操作
- POST(新增/保存)
- DELETE(删除)
- PUT(修改)
- GET(查询)
//设置当前请求方法为POST,表示REST风格中的添加操作
@RequestMapping(value = "/users",method = RequestMethod.POST)
@ResponseBody
public String save(){
System.out.println("user save...");
return "{'module':'user save'}";
}
//设置当前请求方法为DELETE,表示REST风格中的删除操作
//@PathVariable注解用于设置路径变量(路径参数),要求路径上设置对应的占位符,并且占位符名称与方法形参名称相同
@RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Integer id){
System.out.println("user delete..." + id);
return "{'module':'user delete'}";
}
还有PUT、GET等方法。
【注】上述@PathVariable
- 名称:@PathVariable
- 类型:形参注解
- 位置:SpringMVC控制器方法形参定义前面
- 作用:绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应
2. @RequestBody、@RequestParam、@PathVariable区别和应用
- 区别
@RequestParam用于接收url地址传参或表单传参
@RequestBody用于接收json数据
@PathVariable用于接收路径参数,使用{参数名称}描述路径参数 - 应用
后期开发中,发送请求参数超过1个时,以json格式为主,@RequestBody应用较广
如果发送非json格式数据,选用@RequestParam接收请求参数
采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值
3. 代码问题与优化【重点】
- 问题1:每个方法的@RequestMapping注解中都定义了访问路径/books,重复性太高。
- 问题2:每个方法的@RequestMapping注解中都要使用method属性定义请求方式,重复性太高。
- 问题3:每个方法响应json都需要加上@ResponseBody注解,重复性太高。
解决问题1:在Controller类上使用@RequestMapping定义共同的访问路径。
解决问题2:使用@GetMapping @PostMapping @PutMapping @DeleteMapping代替@RequestMapping(method=RequestMethod.XXX)
解决问题3:在Controller类上使用@RestController注解,等同于@Controller与@ResponseBody两个注解组合功能