SpringBoot 参数接收只看这一篇文章就够了
创始人
2024-05-13 11:45:36
0

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

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 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 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

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...