Spring Boot 提供了一组新的 REST 请求注释,可以简化构建 RESTful Web 服务的过程。

在Spring 4.3之前,我们使用@RequestMapping注解来实现RESTful的URL映射。

在Spring 4.3之后,拓展简化了@RequestMapping的方法级别注解,新的方法注释更加简洁且更易于阅读。它们还提供更具体的功能,并有助于减少构建 RESTful Web 服务所需的样板代码量。

@RequestMapping

不设置 method 请求方式是 get 还是 post 时,GETPOST 都可以访问。

参数

  • consumes – 映射请求的消耗媒体类型,缩小主映射范围。(例如@RequestMapping(consumes = {“application/json”, “application/xml”}))。
  • method – 要映射的 HTTP 请求方法(例如method = {RequestMethod.GET,RequestMethod.POST}).
  • header – 映射请求的标头。
  • name – 映射的名称。
  • value – 该注释表达的主要映射(例如:/login
  • produces – 映射请求的可产生媒体类型。
  • params - 提供了一种有条件地将处理程序方法映射到包含某些具有预期值的参数的请求的方法。(如果是可选参数,则可以在名称前加上!
@RequestMapping(value = "/products", params = "category=electronics")
public String listElectronicProducts() { // ...
}

参数注解

@RequestBody

用于读取请求体,将请求正文内容(例如JSON)映射到对象。

@PostMapping("/users")
public User createUser(@RequestBody User user) { // ...
}
@PostMapping(value = "/users", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public ResponseEntity createUser(@RequestBody MultiValueMap<String, String> formData) { // ...
}

@PathVariable

用于从请求 URI 中提取值。

@GetMapping("/users/{id}")
public ResponseEntity getUserById(@PathVariable Long id) {
User user = userService.getUserById(id);
return ResponseEntity.ok(user);
}

@RequestParam

从HTTP请求中提取查询参数或表单数据。

@GetMapping("/search")
public String search(@RequestParam String query, @RequestParam int page) { // ...
}
@RequestMapping("/sub/filter")
@ResponseBody
public Result<Map<String,Object>> getCategoryFilter(@RequestParam("id") String id){
return Result.success(categoryService.getCategoryFilter(Integer.parseInt(id)));
}

@RequestHeader

访问 HTTP 请求标头。

@GetMapping("/users")
public List getUsers(@RequestHeader("Accept-Language") String language) { // ...
}

@GetMapping

该注解用于处理 HTTP GET 请求。

参数:

  • value:一个字符串,指定此方法应处理的 URL 路径。
  • produces:一个字符串或字符串数组,指定此方法生成的响应的媒体类型。
  • params:一个字符串数组,指定调用此方法必须存在的请求参数。
  • headers:一个字符串数组,指定调用此方法必须存在的标头。

@PostMapping

该注解用于处理 HTTP POST 请求。

参数:

  • value:一个字符串,指定此方法应处理的 URL 路径。
  • consumes:一个字符串或字符串数组,指定此方法使用的请求正文的媒体类型。
  • produces:一个字符串或字符串数组,指定此方法生成的响应的媒体类型。
  • params:一个字符串数组,指定调用此方法必须存在的请求参数。
  • headers:一个字符串数组,指定调用此方法必须存在的标头。

@PutMapping

该注解用于处理 HTTP PUT 请求。

@DeleteMapping

该注释用于处理 HTTP DELETE 请求。

参考链接

Spring框架@RequestMapping完整指南 - 知乎 (zhihu.com)

浅谈@RequestMapping和@GetMapping等其他请求注解的区别_requestmapping还是getmapping-CSDN博客