当前位置: 首页 > news >正文

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

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

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

相关文章:

  • Vector - VT System - 模拟IO板卡_VT2816
  • 云原生|kubernetes|2022年底cks真题解析(1-10)
  • 7个实用的DTC品牌出海营销策略,打造强大的品牌竞争力
  • 浅谈Android下的注解
  • 【初阶数据结构】——写了将近 5 万字,终于把 二叉树 初阶的内容讲清楚了
  • c++通讯录管理系统
  • jvm系列(1)--JVM和Java体系架构
  • 线程池ThreadPoolExecutor源码解析
  • 如何减少频繁创建数据库连接的性能损耗?
  • WebSocket长连接接入支付宝消息服务,实现消息通知
  • 数组常用方法总结 (6) :includes / indexOf / lastIndexOf / valueOf / toString / isArray
  • 系统分析师案例必备知识点汇总---2023系列文章一
  • java springboot 项目构建报错解决办法
  • SMT32串口使用中断 和使用 RTOS的对比
  • 【MySQL进阶教程】MySQL管理
  • 狗厂的N+1+2毕业,我觉得还是挺良心的
  • SAP ABAP——SAP包(一)【包概要简述及创建】
  • 【Redis】Redis实现分布式锁
  • 普通土万象
  • 蛇形矩阵(简单明了的方法)
  • 龚曙光:散文家永远只有一个视角,就是“我与时代”
  • 文昌市委原书记龙卫东已任海南省人社厅党组书记
  • 2025年度人大立法工作计划将公布:研究启动法律清理工作
  • 5月1日起,涉外婚姻登记将在上海市16区全面铺开
  • 陕西全省公开征集涉企行政执法问题线索,切实减轻企业负担
  • 2024年度全国十大考古新发现公布,武王墩一号墓等入选