一、前言

想要了解 @GetMapping 和 @PostMapping 的区别,首先需要了解一下@RequestMapping注解。
了解@RequestMapping注解请点我

二、@GetMapping和@PostMapping的区别

(1)@GetMapping是@RequestMapping(method = RequestMethod.GET)缩写的组合注解,用于将 HTTP 的get 请求映射到特定处理程序的方法注解。

(2)@PostMapping是@RequestMapping(method = RequestMethod.POST)缩写的组合注解,用于将 HTTP 的post 请求映射到特定处理程序的方法注解。

(3)下面来看一看@GetMapping的源码
在这里插入图片描述
上图中最为重要的是这行代码:

@RequestMapping( method = {RequestMethod.GET} )

这行代码即说明@GetMapping就是@RequestMapping附加了get请求方法。也就是说@GetMapping就是一个只能用来处理http的get请求的注解,比较专一,只能干这一件事,不像@RequestMapping可以处理多种http的请求.
同时,可以看到@GetMapping这个注解 是spring4.3版本引入,同时引入的还有@PostMapping、@PutMapping、@DeleteMapping和@PatchMapping,一共5个注解。

(4)在一般情况下我们开发可能都是用@RequestMapping(method=RequestMethod.×××),因为@RequestMapping可以直接替代以上两个注解,但是以上两个注解并不能替代@RequestMapping。
类似的组合注解还有上面提到的:@PutMapping、@DeleteMapping、@PatchMapping三个注解。

三、总结
总结一下:@PostMapping、@GetMapping、@PutMapping、@DeleteMapping、@PatchMapping都可以用@RequestMapping代替,如果怕在映射的时候出错,可以统一使用@RequestMapping(method=RequestMethod.×××),当然这样写的话也有弊端,笼统的全用@RequestMapping, 不便于其他人对代码的阅读和理解!还是建议区分开来写,养成良好的代码习惯!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐