Spring中的@GetMapping, @PostMapping, @PutMapping, @DeleteMapping and @PatchMapping介绍

x33g5p2x  于2022-09-25 转载在 Spring  
字(1.9k)|赞(0)|评价(0)|浏览(324)

在本文中,我们将讨论 Spring 4.3。引入了 @RequestMapping 的特定于 HTTP 方法的快捷方式变体。 Spring RequestMapping 新的 Shortcut Annotations 是**@GetMapping**、@PostMapping@PutMapping@DeleteMapping、@PatchMapping

新注解

通常,如果我们想使用传统的 @RequestMapping 注解来实现 URL 处理程序,它会是这样的:

@RequestMapping(value = "/get/{id}", method = RequestMethod.GET)

新方法可以将其简化为:

@GetMapping("/get/{id}")

Spring 当前支持五种类型的内置快捷方式注解,用于处理不同类型的 HTTP 请求。

  • @GetMapping
  • @PostMapping
  • @PutMapping
  • @DeleteMapping
  • @PatchMapping

从命名约定可以看出,每个注解都是为了处理各自传入的请求方法类型,即*@GetMapping用于处理GET类型的请求方法,@PostMapping用于处理POST*类型请求方法等

这个注解是如何工作的?

上述所有注解都已在内部使用 @RequestMapping 以及 method 元素中的相应值进行了注解。

例如,如果我们查看** **@PostMapping注解的源代码,我们可以看到它已经通过以下方式注解了 *RequestMethod.POST *:

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(
    method = {RequestMethod.POST}
)
public @interface PostMapping {
    // Default Inbuilt Code
}

所有其他注解都以相同的方式创建。 @GetMapping 用 RequestMethod.GET 注解,@PutMappingRequestMethod.PUT, 等注解。

注解的完整源代码可在 here 中找到。

### 执行

1. @GetMapping

@ResponseBody
    @GetMapping(value = "/employee/{id}")
    public Employee getEmployeeById(@PathVariable Long id)
    {

        return  employeeRepository.findById(id).get();
    }

2. @PostMapping

@PostMapping(value = "/employee")
    public Employee createEmployee(@RequestBody Employee employee)
    {
        return  employeeRepository.save(employee);
    }

3. @PutMapping

@PutMapping(value = "/employee")
    public Employee updateEmployee(@RequestBody Employee employee)
    {
        return  employeeRepository.existsById(employee.getId()) ? employeeRepository.save(employee) : null;
    }

4. @DeleteMapping

@DeleteMapping(value = "/employee/{id}")
    public void deleteEmployee(@PathVariable Long id)
    {
         employeeRepository.deleteById(id);
    }

5. @PatchMapping

@PatchMapping("/patch")
public @ResponseBody ResponseEntity<String> patch() {
    return new ResponseEntity<String>("PATCH Response", HttpStatus.OK);
}

我们使用了必要的注解来处理正确的传入 HTTP 方法。 @GetMapping 处理“/get”请求 URI,@PostMapping 处理“/post”请求 URI。等等。

如果我们必须处理任何 URL 路径变量,我们可以简单地用更少的方式来处理,我们以前使用 @RequestMapping.

代码示例在 Github 上可用

相关文章

微信公众号

最新文章

更多