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

 更新时间:2021年08月11日 14:54:27   作者:蜗牛-  
这篇文章主要介绍了@RequestMapping和@GetMapping及@PostMapping的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

@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中的参数哈,比较简单。以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java MongoDB实现REST过程解析

    Java MongoDB实现REST过程解析

    这篇文章主要介绍了Java MongoDB实现REST过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 如何利用Jackson序列化忽略指定类型的属性详解

    如何利用Jackson序列化忽略指定类型的属性详解

    这篇文章主要给大家介绍了关于如何利用Jackson序列化忽略指定类型的属性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • SpringBoot整合OpenFeign的坑

    SpringBoot整合OpenFeign的坑

    最近试用SpringBoot+K8S,遇到了个坑,通过OpenFeign请求返回值LocalDateTime发生了异常,本文就详细的介绍一下解决方法,感兴趣的可以了解一下
    2021-07-07
  • java实战之桌球小游戏

    java实战之桌球小游戏

    这篇文章主要为大家详细介绍了java实战之桌球小游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • SpringBoot 整合 Quartz 定时任务框架详解

    SpringBoot 整合 Quartz 定时任务框架详解

    这篇文章主要介绍了SpringBoot整合Quartz定时任务框架详解,Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制
    2022-08-08
  • java以json格式向后台服务器接口发送请求的实例

    java以json格式向后台服务器接口发送请求的实例

    下面小编就为大家分享一篇java以json格式向后台服务器接口发送请求的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Java NIO框架Netty简单使用的示例

    Java NIO框架Netty简单使用的示例

    本篇文章主要介绍了Java NIO框架Netty简单使用的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • java.lang.FileNotFoundException 异常的正确解决方法(亲测有效)

    java.lang.FileNotFoundException 异常的正确解决方法(亲测有效)

    java.io.FileNotFoundException是一个在文件操作过程中常见的异常,它属于IOException的一个子类,这篇文章主要介绍了java.lang.FileNotFoundException 异常的正确解决方法(亲测有效),需要的朋友可以参考下
    2024-01-01
  • JBoss5.x下配置Log4j方法介绍

    JBoss5.x下配置Log4j方法介绍

    这篇文章主要介绍了JBoss5.x下配置Log4j方法介绍,小编觉得挺不错的,这里分享给大家,供需要的朋友参考。
    2017-10-10
  • java锁升级过程过程详解

    java锁升级过程过程详解

    这篇文章主要介绍了Java锁升级的实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08

最新评论