聊聊@RequestMapping和@GetMapping @PostMapping的区别
作者:蜗牛- 发布时间:2021-07-26 19:20:43
@RequestMapping和@GetMapping @PostMapping的区别
最近学习看一些代码,发现对于发送请求这件事,有的地方用@RequestMapping,有的地方用@PostMapping,为了搞清楚区别,特意查了下spring 源代码,现在特此记录下。
@GetMapping
用于将HTTP get请求映射到特定处理程序的方法注解具体来说,@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。
@PostMapping
用于将HTTP post请求映射到特定处理程序的方法注解具体来说,@PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。
下面我们来看下@GetMapping的源码
可以对上面的两句释义给予充分的支撑。
/**
* Annotation for mapping HTTP {@code GET} requests onto specific handler
* methods.
*
* <p>Specifically, {@code @GetMapping} is a <em>composed annotation</em> that
* acts as a shortcut for {@code @RequestMapping(method = RequestMethod.GET)}.
*
*
* @author Sam Brannen
* @since 4.3
* @see PostMapping
* @see PutMapping
* @see DeleteMapping
* @see PatchMapping
* @see RequestMapping
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(method = RequestMethod.GET)
public @interface GetMapping {
/**
* Alias for {@link RequestMapping#name}.
*/
@AliasFor(annotation = RequestMapping.class)
String name() default "";
...
}
上面代码中,最关键的是
@RequestMapping(method = RequestMethod.GET)
这行代码即说明@GetMapping就是@RequestMapping附加了请求方法。
同时,可以看到@GetMapping这个注解 是spring4.3版本引入,同时引入的还有@PostMapping、@PutMapping、@DeleteMapping和@PatchMapping,一共5个注解。
所以,一般情况下用
@RequestMapping(method = RequestMethod. XXXX)
即可。
SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍
介绍几种如何处理url中的参数的注解@PathVaribale/@RequestParam/@GetMapping。
其中,各注解的作用为:
@PathVaribale 获取url中的数据
@RequestParam 获取请求参数的值
@GetMapping 组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写
看一个例子,如果我们需要获取Url=localhost:80/consumer/get/{id}中的返回的dept值,实现代码如下:
以上,通过@PathVariable注解来获取URL中的时参数的前提条件是我们知道url的格式时怎么样的。
只有知道url的格式,我们才能在指定的方法上通过相同的格式获取相应位置的参数值。
一般情况下,url的格式为:localhost:80/consumer/get/{id},这种情况下该如何来获取其中的返回的dept值呢,
关于@RequestParam来完成获取返回值代码如下
当输入:http://localhost/consumer/dept/get/1?id=1
看到返回了dept的结果:
但是当输入:http://localhost/consumer/dept/get/1 (即不输入id参数和参数值)
但是当输入:http://localhost/consumer/dept/get/1?id (不输入id参数值)
会报如下错误:
@RequestParam注解给我们提供了这种解决方案,即允许用户不输入id时,使用默认值,具体代码如下:
此时输入:http://localhost/consumer/dept/get/1?id 就不在报错(使用了默认值)
输入:http://localhost/consumer/dept/get/1
@GetMapping 组合注解
@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。该注解将HTTP Get 映射到 特定的处理方法上。
即可以使用@GetMapping(value = “/dept/get/{id}”)来代替
@RequestMapping(value=”/dept/get/{id}”,method= RequestMethod.GET)
即可以让我们精简代码。
输入:http://localhost/consumer/dept/get/1?id
输入:http://localhost/consumer/dept/get/1
小结
本篇文章介绍了几种常用获取url中的参数哈,比较简单。以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
来源:https://blog.csdn.net/magi1201/article/details/82226289


猜你喜欢
- 摘要每天一个UI小技巧,提高开发效率 UI开发中繁琐的drawable xml开发,不同的view背景样式一致,却因为部分设计区别,就要重新
- 最近修改线上bug的时候排查了一个十分隐藏的bug,直接上代码:Integer a = null;boolean flag = true;I
- 一个Maprduce程序主要包括三部分:Mapper类、Reducer类、执行类。Maven项目下所需依赖<dependencies&
- 这篇博客主要介绍的是 Android 主流各种机型和各种版本的悬浮窗权限适配,但是由于碎片化的问题,所以在适配方面也无法做到完全的主流机型适
- MybatisAnnotationToolsMybatisAnnotationTools 是基于 Java8 开发的一款可以用于自动化生成
- 描述输入一行字符串,分别统计出其中英文字母、空格、数字和其它字符的个数输入描述:控制台随机输入一串字符串输出描述:输出字符串中包含的英文字母
- 一、在 AndroidManifest.xml文件中配置Widgets:<manifest xmlns:android="h
- 可以使用 graphics2D 类提供的 shear(
- 云计算、大数据地快速发展催生了不少热门的应用及工具。作为老牌语言Java,其生态圈也出来了一些有关云服务、监控、文档分享方面的工具。本文总结
- 纯Java代码模拟Hibernate一级缓存原理,简单易懂。import java.util.ArrayList;import java.u
- Cloneable这个接口设计得十分奇葩,不符合正常人的使用习惯,然而用这个接口的人很多也很有必要,所以还是有必要了解一下这套扭曲的机制。以
- import java.util.Scanner;public class VariableExchange { &n
- 前言最近工作上遇到很多批量插入的场景,但是百度很难得到我想要的结果,而且查出来的效果不是很好~所以就自己来写一份给大家参考,希望对大家有用M
- Flink中设计了用户自定义函数体系(User Defined Function,UDF),开发人员实现业务逻辑就是开发UDF。一、环境对象
- 本篇文章主要介绍了详解Xamarin.Android 利用Fragment实现底部菜单,分享给大家,具体如下:效果图:第一步:添加引用引用
- namespace ConsoleTest{ class Program  
- 前言Spring5带来了新的响应式web开发框架WebFlux,同时,也引入了新的HttpClient框架WebClient。WebClie
- Stream流多字段求和、汇聚实现方法利用Collectors.toMap(Function keyMapper, Function val
- RecyclerView目前来说对大家可能不陌生了。由于在公司的项目中,我们一直用的listview和gridview。某天产品设计仿照美团
- eclipse导入Spring配置文件约束 Windows-Preference-XML-XMLCatalog点 Add 选Fil