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

(0)

相关推荐

  • SpringBoot @RequestParam、@PathVaribale、@RequestBody实战案例

    实例User package com.iflytek.odeon.shipper.model.rx; import io.swagger.annotations.ApiModelProperty; public class Student { @ApiModelProperty(value = "名称", example = "zhangsan", required = true) private String name; private Integer call;

  • SpringBoot 中常用注解及各种注解作用

    本篇文章将介绍几种SpringBoot 中常用注解 其中,各注解的作用为: @PathVaribale 获取url中的数据 @RequestParam 获取请求参数的值 @GetMapping 组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写 @RestController是@ResponseBody和@Controller的组合注解. @PathVaribale 获取url中的数据 看一个例子,如果我们需要获取Url=localhost:

  • spring boot 的常用注解使用小结

    @RestController和@RequestMapping注解 4.0重要的一个新的改进是@RestController注解,它继承自@Controller注解.4.0之前的版本,Spring MVC的组件都使用@Controller来标识当前类是一个控制器servlet.使用这个特性,我们可以开发REST服务的时候不需要使用@Controller而专门的@RestController. 当你实现一个RESTful web services的时候,response将一直通过response

  • springboot中一些比较常用的注解总结

    springboot常用注解 1.@SpringBootApplication 这个注解是Spring Boot最核心的注解,用在 Spring Boot的主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力.实际上这个注解是@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解的组合.由于这些注解一般都是一起使用,所以Spring Boot提供了一个统一的注解@SpringBootAppl

  • 浅谈springBoot注解大全

    一.注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan.@Configuration和@EnableAutoConfiguration注解.其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文. @Configuration 等同于spring的XML配置文件:使用Java代码可以检查类型安全. @EnableAutoConfiguration 自动配置. @Compon

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

    @RequestMapping和@GetMapping @PostMapping的区别 最近学习看一些代码,发现对于发送请求这件事,有的地方用@RequestMapping,有的地方用@PostMapping,为了搞清楚区别,特意查了下spring 源代码,现在特此记录下. @GetMapping用于将HTTP get请求映射到特定处理程序的方法注解 具体来说,@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写.

  • 关于@GetMapping和@GetMapping(value=““)的区别

    目录 @GetMapping和@GetMapping(value=““)区别 背景 问题 说明 应用Demo 初识GetMapping("")使用方法 @GetMapping和@GetMapping(value=““)区别 背景 初期对于@GetMapping的理解比较简单,以为给什么路由就走什么路由.后来查看资料后有了更进一步的认识,特此纪要! 问题 @GetMapping和@GetMapping(value=““)的区别是什么? 说明 1.@GetMapping的标准语法是有Val

  • 聊聊Numpy.array中[:]和[::]的区别在哪

    [:]和[::]的区别蛮大的,用的好可以节省时间,下面以实例进行分析 array([:]) >>> import numpy as np >>> >>> x=np.array([1,2,3,4,5,6,7,8,9,10,11,12]) >>> print(x[1:5])#打印index为1~5的数组,范围是左闭右开 [2 3 4 5] >>> print(x[3:])#打印index=3之后的数组,包含index=3

  • SpringMVC中常用注解与使用方法详解

    MVC简介 MVC 全名是 Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写, 是一种用于设计创建 Web 应用程序表现层的模式. Model(模型): 通常指的就是我们的数据模型.作用一般情况下用于封装数据. View(视图): 通常指的就是我们的 jsp 或者 html.作用一般就是展示数据的. 通常视图是依据模型数据创建的. Controller(控制器): 是应用程序中处理用户交互的部分.作用一般就是处理程序逻辑的.

  • springboot @Controller和@RestController的区别及应用详解

    目录 @Controller和@RestController的区别及应用 @Controller和@RestController区别 @Controller的应用 @RestController的应用 @Controller和@RestController区别的小坑 1.如果注解Controller使用@RestController 2.如果需要返回到指定页面(jsp/html) @Controller和@RestController的区别及应用 @Controller和@RestControl

  • Spring MVC温故而知新系列教程之请求映射RequestMapping注解

    RequestMapping注解说明 @RequestMapping注解的作用将Web请求映射到特定处理程序类和/或处理程序方法,这个注解可以用于类或者方法上,并通过属性value指定请求路径.用在Controller类上表示提供初步的URL请求映射信息,相对于Web应用的根目录,这是一个前置请求路径.用在Controller中方法上,表示提供详细的URL映射.如果Controller类上没有加RequestMapping注解,则方法上注解标记的URL则是相对于Web应用的根目录. @Reque

  • SpringMVC加载控制与Postmand的使用和Rest风格的引入及RestFul开发全面详解

    目录 前言 一.bean的加载控制 二.容器加载 1.createServletApplicationContext()方法 2.createRootApplicationContext()方法 3.getServletMappings()方法 三.PostMan的引入 1.发送GET请求 2.发送POST请求 3.中文乱码问题解决 四.Rest风格 1.REST简介 2.RESTful传参 3.RESTful简便形式(快速开发) 4.放行静态资源 前言 从繁到简是贯彻SSM学习过程的原始真解

  • SpringMVC REST风格深入详细讲解

    目录 REST简介 RESTful入门案例 REST快速开发 案例-基于RESTful页面数据交互 REST简介 REST介绍 REST(Representational State Transfer),表现形式状态转换 传统风格资源描述形式 http://localhost/user/getById?id=1 http://localhost/user/saveUser REST风格描述形式 http://localhost/user/1 http://localhost/user 优点 隐藏

  • Spring Cloud实现提供API给客户端的方法详解

    前言 现在越来越多的公司开始拥抱Spring Cloud了,Spring Boot做为下一代 web 框架,Spring Cloud 作为最新最火的微服务的翘楚,你还有什么理由拒绝.很多Java方向的同学也开始积极的学习Spring Cloud,其实这边还有一个问题就是说:虽然大家学了Eureka,Ribbon,Hystrix,Zuul,Feign等等,但是要运用到实际的项目中去还是有些难度的. 微服务难就难在服务的拆分上,框架只是工具,很多人都会用,服务拆分,服务之间的关系这些都是在拆分时候需

  • Spring mvc Controller和RestFul原理解析

    控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现. 控制器负责解析用户的请求并将其转换为一个模型. 在Spring MVC中一个控制器类可以包含多个方法 在Spring MVC中,对于Controller的配置方式有很多种 实现Controller接口 Controller是一个接口,在org.springframework.web.servlet.mvc包下,接口中只有一个方法: //实现该接口的类获得控制器功能 public interfa

随机推荐