聊聊@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值,实现代码如下:

聊聊@RequestMapping和@GetMapping @PostMapping的区别

以上,通过@PathVariable注解来获取URL中的时参数的前提条件是我们知道url的格式时怎么样的。

只有知道url的格式,我们才能在指定的方法上通过相同的格式获取相应位置的参数值。

一般情况下,url的格式为:localhost:80/consumer/get/{id},这种情况下该如何来获取其中的返回的dept值呢,

关于@RequestParam来完成获取返回值代码如下

聊聊@RequestMapping和@GetMapping @PostMapping的区别

当输入:http://localhost/consumer/dept/get/1?id=1

看到返回了dept的结果:

聊聊@RequestMapping和@GetMapping @PostMapping的区别

但是当输入:http://localhost/consumer/dept/get/1 (即不输入id参数和参数值)

但是当输入:http://localhost/consumer/dept/get/1?id (不输入id参数值)

会报如下错误:

聊聊@RequestMapping和@GetMapping @PostMapping的区别

@RequestParam注解给我们提供了这种解决方案,即允许用户不输入id时,使用默认值,具体代码如下:

聊聊@RequestMapping和@GetMapping @PostMapping的区别

此时输入:http://localhost/consumer/dept/get/1?id 就不在报错(使用了默认值)

聊聊@RequestMapping和@GetMapping @PostMapping的区别

输入:http://localhost/consumer/dept/get/1

聊聊@RequestMapping和@GetMapping @PostMapping的区别

@GetMapping 组合注解

@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。该注解将HTTP Get 映射到 特定的处理方法上。

即可以使用@GetMapping(value = “/dept/get/{id}”)来代替


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

即可以让我们精简代码。

聊聊@RequestMapping和@GetMapping @PostMapping的区别

输入:http://localhost/consumer/dept/get/1?id

聊聊@RequestMapping和@GetMapping @PostMapping的区别

输入:http://localhost/consumer/dept/get/1

聊聊@RequestMapping和@GetMapping @PostMapping的区别

小结

本篇文章介绍了几种常用获取url中的参数哈,比较简单。以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

来源:https://blog.csdn.net/magi1201/article/details/82226289

标签:RequestMapping,GetMapping,PostMapping
0
投稿

猜你喜欢

  • java继承中的构造方法实例解析

    2022-07-26 02:56:00
  • Spring Cloud负载均衡及远程调用实现详解

    2021-10-16 01:11:27
  • Android实现绘制LocationMarkerView图的示例代码

    2023-01-14 07:55:29
  • C#实现的JS操作类实例

    2023-11-13 05:19:48
  • c# JSON返回格式的WEB SERVICE

    2022-04-16 01:43:31
  • 解析Java中PriorityQueue优先级队列结构的源码及用法

    2023-11-08 13:33:11
  • WPF实现3D翻牌式倒计时特效

    2021-11-11 16:08:21
  • java split用法详解及实例代码

    2022-06-27 06:48:19
  • C#实现json格式转换成对象并更换key的方法

    2021-12-23 00:09:39
  • C#使用foreach遍历哈希表(hashtable)的方法

    2022-10-07 20:00:44
  • C#异步的世界(上)

    2021-09-21 06:01:43
  • java自定义ClassLoader加载指定的class文件操作

    2022-03-16 16:19:07
  • C#中循环语句:while、for、foreach的使用

    2022-05-01 02:42:55
  • C#集合之队列的用法

    2022-11-24 16:15:38
  • 详解JAVA里面获取map的key和value的方法

    2023-04-27 03:11:50
  • Android Studio实现简易计算器设计

    2022-08-22 18:41:55
  • C#探秘系列(三)——StackTrace,Trim

    2022-04-27 21:24:03
  • Java实现的3des加密解密工具类示例

    2023-08-21 14:00:01
  • 简述Java编程之关系操作符

    2021-08-07 09:44:23
  • java查找字符串中的包含子字符串的个数实现代码

    2022-08-15 17:48:45
  • asp之家 软件编程 m.aspxhome.com