RESTful开发风格

106 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

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两个注解组合功能