SpringBoot 参数接收只看这一篇文章就够了

news2024/10/7 18:31:21

好久没有写过接口了,最近在写一些基础接口,在写参数接口接收参数的时候居然想不起来,会有那么一丝丝的怀疑,虽然并不会影响编码,但是说明一个问题,没有系统的总结知识,没有温故知新,整理一下分享下。

1、路径参数 @PathVariable

1.1 基础使用

通过@PathVariable可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable("xxx")

举个栗子:

@GetMapping("park/{parkingId}")publicStringqueryPark(@PathVariableStringparkingId){returnparkingId;}

访问路径:http://localhost:8080/park/123

这里123 会被绑定到 parkingId

1.2 注意点

Spring能够根据名字自动赋值对应的函数参数值

注解的参数可以是一些基本的简单类型:int,long,Date,String等

Spring能根据URL变量的具体值以及函数参数的类型来进行转换

2、@RequestParam

2.1 基础使用

注解@RequestParam绑定请求参数到方法形参,适用key,value的方式,同时适用get、post方法。

举个栗子:

     @RequestMapping("park/requestParam")
    public String query1(@RequestParam String parkingId){
        return parkingId;
    }

post在使用的时候可以使用表单提交,也就是form-data的方式

也可以使用get的方式访问 http://localhost:8080/park/requestParam?parkingId=xxx

2.2 注意点

同时使用get,post

参数必须是key,value的形式

没有生命变量名的时候默认参数名当做key值

3、@RequestBody

3.1 基本使用

RequestBody主要用来接收前端传递给后端的json字符串中的数据(请求体中的数据的)

举个栗子:

   @PostMapping("park/add")
    public Result addApply(@RequestBody ApplyInfoDto applyInfoDto){
        return   Result.success();
    }

访问路径:http://localhost:8080/park/list/add

3.2 注意点

一个请求,只有一个RequestBody

content-type必须是application/json

只适用post的方式

4、HttpServletRequest参数接收

4.1 基础使用

http请求对象HttpServletRequest中的数据要么通过流(json请求时)或者参数的形式(form表单)向后台传输数据

举个栗子:

    @RequestMapping("park/request/{da}")
    public String query2(HttpServletRequest request) throws IOException {
        //  key-value 类型
        Map<String, String[]> map = request.getParameterMap();
        //  路径参数
        String pathInfo = request.getPathInfo();
        //  body内容
        ServletInputStream inputStream = request.getInputStream();
       
        return "111";
    }

4.2 注意点

HttpServletRequest 是整个请求,可以获取到所有的数据

HttpServletRequest 可以和其他的注解配合适用

HttpServletRequest、HttpServletResponse都是内置对象,可以使用

5、@RequestHeader

5.1 基础使用

RequestHeader主要用来获取请求当中的请求头

// 方式1:获取单个header属性
@RequestMapping("/geteHeader")
public void getHeader(@RequestHeader("user-id") String userId){
 
}
//方式2:获取所有header属性
@RequestMapping("/geteHeader")
public void getHeader(@RequestHeader Map<String, String> headers){
 
}
//方式3 获取header对象
@RequestMapping("/geteHeader")
public void getHeader(@RequestHeader HttpHeaders headers){
 
}

6、@CookieValue

使用@CookieValue注解来获得指定的 Cookie 的值。

@GetMapping("park/getCookie")
    public String getCookieValue(@CookieValue("jid") String jId) {
        System.out.println(jId);
        return "success";
    }

7、不基于任何注解进行表单传参

不基于任何注解进行表单传参,springboot会根据变量名进行赋值

 @RequestMapping("park/nothing")
    public String getByNothing( String parkingId) {
        System.out.println(parkingId);
        return "success";
    }

注:key-value的方式可以

8、总结

springboot接口参数的接收没什么特殊的地方,归纳一下

前端数据的输入方式:路径参数,key-value的方式,还有就是raw的模式,这里主要是json,Header,Cookie

后端的主要注解:PathVariable,RequestParam,RequestBody 直接和上面的三种方式对应

可使用的内置对象:HttpServletRequest,HttpServletResponse,HttpHeaders

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/169315.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PMP真的有用吗?

作为一个考了PMP的前辈来说&#xff0c;是有用的。PMP 含金量&#xff0c;PMP有没有用&#xff0c;这类问题一直是大家关注的重点&#xff0c;知乎上几个相关问题热度也一直很高。友情提示一句&#xff1a;PMP 就是一个证书&#xff0c;能起到加分和门槛的作用&#xff0c;技术…

Diazo Biotin-PEG3-DBCO,二苯并环辛炔PEG3重氮生物素,无铜 Click Chemistry

Diazo Biotin-PEG3-DBCO反应原理&#xff1a;Diazo Biotin-PEG3-DBCO 是一种点击化学标记生物素&#xff0c;可通过无铜 Click Chemistry 与叠氮化物发生反应。重氮允许使用连二亚硫酸钠 (Na2S2O4) 从链霉亲和素中有效释放捕获的生物素化分子。点击化学生物素标记试剂包含各种点…

基于麻雀算法优化的深度极限学习机DLM的预测算法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

基于SpringBoot的SSMP整合(业务层表现层)

基于SpringBoot的SSMP整合&#xff08;数据层&#xff09;https://blog.csdn.net/weixin_51882166/article/details/128693739?spm1001.2014.3001.5502 标准CRUD Service层接口定义与数据层接口定义具有较大差距。 定义Service接口&#xff1a; package com.example.ssmp_…

蓝桥杯STM32G431RBT6学习——LCD

蓝桥杯STM32G431RBT6学习——LCD 前言 作为在开发板上最显眼的LCD屏幕&#xff0c;自然而然也是每年的必考考点。国信长天开发板使用的是一块2.4寸&#xff08;240*320&#xff09;的TFT-LCD液晶屏&#xff0c;其引脚占用如下&#xff1a; 其中&#xff0c;CS为片选信号引脚…

【Netty】实现IM聊天室案例Demo

文章目录1、WebSocket链接建立2、实现用户上线功能3、私聊发送消息注意&#xff1a; 该文章不会详细介绍Netty相关概念和原理&#xff0c;主要目的是介绍如何快速构建聊天室Demo 不会在文章主体过多说明代码流程&#xff0c;文章中的代码已经配备了详细的注释 1、WebSocket链接…

网站建设 之 用js写wasm

为什么要这么做&#xff1f;编译js比解释js更快是必然的wasm是什么&#xff1f;我期望是一个二进制文件WebAssembly&#xff08;又名wasm&#xff09;是一种高效的&#xff0c;低级别的编程语言。 它让我们能够使用JavaScript以外的语言&#xff08;例如C&#xff0c;C &#x…

【Linux】进度条小程序

目录一.\r && \n二.行缓存区概念问题&#xff1a;解答&#xff1a;检测&#xff1a;三.进度条1.进度动态条2.进度百分比3.小装饰4.颜色该篇博客会主要按步骤推导出一个在Linux上运行的进度条小程序&#xff0c;会用到vim编辑器和gcc编译器&#xff0c;如果对这两个软件…

Centos7安装、卸载nginx及配置,配置成系统服务(一步到位)

目录 前言 一、下载安装解压 1.进入临时文件夹里&#xff08;随便一个都行&#xff09; 2.下载并安装nginx压缩包 3.解压该压缩包 4.创建目标文件夹 5.&#xff08;默认会安装在/usr/local/nginx&#xff09;这里通过configure命令指定安装目录 6.编译安装 7.最后生成的…

一、初始Numpy

1、numpy简介 简介 Numpy&#xff08;Numerical Python&#xff09;是Python语言的一个扩展程序库&#xff0c;支持大量的维度数组与矩阵运算&#xff0c;此外也针对数组运算提供大量的数学函数库 Numpy的前身Numeric最早是有Jim Hugunin与其他协作者共同开发&#xff0c;20…

十五天学会Autodesk Inventor,看完这一系列就够了(九),主题/色彩/单位设置

众所周知&#xff0c;Autocad是一款用于二维绘图、详细绘制、设计文档和基本三维设计&#xff0c;现已经成为国际上广为流行的绘图工具。Autodesk Inventor软件也是美国AutoDesk公司推出的三维可视化实体模拟软件。因为很多人都熟悉Autocad&#xff0c;所以再学习Inventor&…

使用SpringBoot创建web项目,并使用外部Tomcat

使用SpringBoot创建web项目&#xff0c;并使用外部Tomcat 目录使用SpringBoot创建web项目&#xff0c;并使用外部Tomcat简单介绍&#xff1a;特点&#xff1a;步骤简介下面就使用SpringBoot创建一个web工程&#xff0c;并且使用外部的Tomcat和实现对jsp的支持&#xff1a;一、创…

AIDL 应用间简单通信demo及基本问题

AIDL:Android Interface Definition Language,即Android接口定义语言。 他的作用大家已经知道了&#xff0c;有些童鞋对于其中的使用细节可能会有一些理解误差&#xff0c;并且会造成一写异常或者通讯失败。 我们先看几个关键点再看代码&#xff0c;如果项目不符合这几点&…

ffmpeg编译android平台-(ubuntu+ndkr16b+ffmpeg3.4.12)

一、环境配置 1、下载NDK,NDK老版本 1.1、 ubuntu下载 wget https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip1.2、解压NDK unzip android-ndk-r16b-linux-x86_64.zip1.3、配置NDK环境变量 vim /etc/profile1.4、 在profile文件中添加如下内容…

String.prototype.matchAll called with a non-global RegExp argument

如上 matchAll这个API 与 正则的全局匹配是不一样的。他会将匹配到的所有字符串以迭代器的形式返回出来。 我们可以使用Array.from或者数据解构来获得匹配到的数组。 他与正则全局匹配的区别是当正则表达式包含()捕获组的时候&#xff0c;全局匹配无法获得子匹配组的数据。 …

【Datewhale一起吃瓜 Task1】周志华西瓜书第一章+第二章

这里写目录标题机器学习是干什么的机器学习的理论基础: PAC模型基本术语关于数据关于假设关于模型训练机器学习任务分类归纳偏好模型的评估和选择训练流程划分数据集的方法留出法交叉验证自助法性能度量机器学习是干什么的 我们目前处于大数据时代&#xff0c;每天会产生数以亿…

一个监控系统的典型架构是什么样的

典型架构 采集器是负责采集监控数据的,采集到数据之后传输给服务端,通常是直接写入时序库。然后就是对时序库的数据进行分析和可视化,分析部分最典型的就是告警规则判断(复杂一些的会引入统计算法和机器学习的能力做预判),即图上的告警引擎,告警引擎产生告警事件之后交给…

华为MPLS跨域带RR实验配置

目录 Option B方案实验配置 配置建立Vpnv4邻居 配置反射器 配置RR和ASBR取消RT值检测 配置ASBR相连接口开启MPLS 配置ASBR向RR发送路由时更改下一跳 Option C1方案实验配置 Option C2方案实验配置 接口IP地址、底层IGP路由协议&#xff08;ISIS&#xff09;、MPLS LDP协…

一种环状二肽3705-26-8,cyclo(Pro-Phe),环(PHE-PRO)环状二肽

基础产品数据&#xff08;Basic Product Data&#xff09;&#xff1a;CAS号&#xff1a;3705-26-8中文名&#xff1a;环(PHE-PRO)英文名&#xff1a;cyclo(Pro-Phe)&#xff0c;CYCLO(-PHE-PRO)结构式&#xff08;Structural&#xff09;&#xff1a;详细产品数据&#xff08;…

qq消息撤回

开发工具 工具名称工具类型说明AndroidStuduo编辑工具开发工具jadxjava工具将apk解成java项目xposed插件工具插件qq版本8.8.80 开始 先通过jadx把apk反编译出来源码&#xff0c;通过build出来&#xff0c;在android studio打开&#xff0c;方便分析。 要撤回自己的消息&…