服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - 聊聊@RequestMapping和@GetMapping @PostMapping的区别

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

2021-11-15 10:54蜗牛- Java教程

这篇文章主要介绍了@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的源码

可以对上面的两句释义给予充分的支撑。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
 * 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 "";
    ...
}

上面代码中,最关键的是

?
1
@requestmapping(method = requestmethod.get)

这行代码即说明@getmapping就是@requestmapping附加了请求方法。

同时,可以看到@getmapping这个注解 是spring4.3版本引入,同时引入的还有@postmapping、@putmapping、@deletemapping和@patchmapping,一共5个注解。

所以,一般情况下用

?
1
@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}”)来代替

?
1
@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

延伸 · 阅读

精彩推荐
  • Java教程Java BufferWriter写文件写不进去或缺失数据的解决

    Java BufferWriter写文件写不进去或缺失数据的解决

    这篇文章主要介绍了Java BufferWriter写文件写不进去或缺失数据的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望...

    spcoder14552021-10-18
  • Java教程20个非常实用的Java程序代码片段

    20个非常实用的Java程序代码片段

    这篇文章主要为大家分享了20个非常实用的Java程序片段,对java开发项目有所帮助,感兴趣的小伙伴们可以参考一下 ...

    lijiao5352020-04-06
  • Java教程xml与Java对象的转换详解

    xml与Java对象的转换详解

    这篇文章主要介绍了xml与Java对象的转换详解的相关资料,需要的朋友可以参考下...

    Java教程网2942020-09-17
  • Java教程Java实现抢红包功能

    Java实现抢红包功能

    这篇文章主要为大家详细介绍了Java实现抢红包功能,采用多线程模拟多人同时抢红包,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙...

    littleschemer13532021-05-16
  • Java教程小米推送Java代码

    小米推送Java代码

    今天小编就为大家分享一篇关于小米推送Java代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...

    富贵稳中求8032021-07-12
  • Java教程Java8中Stream使用的一个注意事项

    Java8中Stream使用的一个注意事项

    最近在工作中发现了对于集合操作转换的神器,java8新特性 stream,但在使用中遇到了一个非常重要的注意点,所以这篇文章主要给大家介绍了关于Java8中S...

    阿杜7482021-02-04
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    这篇文章主要介绍了Java使用SAX解析xml的示例,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程升级IDEA后Lombok不能使用的解决方法

    升级IDEA后Lombok不能使用的解决方法

    最近看到提示IDEA提示升级,寻思已经有好久没有升过级了。升级完毕重启之后,突然发现好多错误,本文就来介绍一下如何解决,感兴趣的可以了解一下...

    程序猿DD9332021-10-08