Spring Boot中优雅地处理参数传递的技巧分享

 更新时间:2023年05月27日 11:42:12   作者:染〞夏  
最近一直在学习Spring Boot,今天将其中的从前台过来的参数传递总结一下,下面这篇文章主要给大家介绍了关于Spring Boot中优雅地处理参数传递的技巧,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

一:四种传参方式

SpringBoot 接收参数的常用方式主要有以下几种:

1.1:在 URL 中传递参数

可以通过在 URL 中添加参数来传递数据,例如:/user?id=123&name=Tom。在 SpringBoot 中,可以使用 @RequestParam 注解来获取请求参数。

1.2:PathVariable 传递参数(Restful 风格)

PathVariable 可以接受 URL 中的变量值,例如:/user/123,其中 123 就是一个变量。在 SpringBoot 中,可以使用 @PathVariable 注解来获取 URL 中的变量值。

1.3:在请求体中传递参数

可以将参数放在请求体中传递,例如:POST 请求中的表单数据或 JSON 数据。在 SpringBoot 中,可以使用 @RequestBody 注解来获取请求体中的参数。

1.4:在请求头中传递参数

可以在请求头中添加参数,例如:JWT Token。在 SpringBoot 中,可以使用 @RequestHeader 注解来获取请求头中的参数。

二:文件上传接口测试  

2.1 : test.java

 @PostMapping("/test10")
    public Result test10(@RequestParam("file") MultipartFile file) {
        return Result.ok(200);
    }

三、@RequestParam

3.1 多个参数

  @GetMapping("/test3")
    public Result test3(@RequestParam("id") Integer id ,
                        @RequestParam("name") String name){
        return Result.ok(name+id);
    }

执行结果:

3.2 单个参数

    @PostMapping("/test4")
    public Result test4(@RequestParam("name") String name) {
        return Result.ok(name);
    }

执行结果:

四、@PathVariable

   @PathVariable 用于绑定 url 中的占位符。例如:请求 url 中 /delete/{id},这个{id}就是 url 占位符。url 支持占位符是 spring3.0 之后加入的。是 springmvc 支持 rest 风格 URL 的一个重要标志。

4.1  单个参数

    @PostMapping("/test2/{id}")
    public Result test2(@PathVariable("id") Integer id) {
        return Result.ok(id);
    }

4.2  多个参数

  @GetMapping("/test1/{id}/{name}")
    public Result test1(@PathVariable("id") Integer id,
                        @PathVariable("name") String name) {
        return Result.ok(id+":"+name);
    }

五、@RequestBody

@RequestBody一般被用来接收http请求中body中json数据。get、post都可以使用。一般用于post。

5.1  单个参数

注意:不支持 (@RequestBody String name 2,@RequestBody String name2)

   @PostMapping("/test5")
    public Result test5(@RequestBody String name) {
        return Result.ok(name);
    }

不同传参得到的结果不同:

" 李四 "

JSON格式:

{
  "name": "李四"
}

5.2  User对象

    @PostMapping("/test6")
    public Result test6(@RequestBody User user) {
        return Result.ok(user);
    }

 结果:

5.3  Map对象 

    @PostMapping("/test7")
    public Result test7(@RequestBody HashMap map) {
        return Result.ok(map);
    }

结果:

5.4  List 集合

    @PostMapping("/test8")
    public Result test8(@RequestBody List<User> list) {
        return Result.ok(list);
    }

结果:

六:RequestHeader

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

代码示例:

    @PostMapping("/test9")
    public Result test9(@RequestHeader("token") String token ) {
        return Result.ok(token);
    }

结果:

七、HttpServletRequest

直接拿到request对象,通过request可以从对象中灵活的获取参数:

@RestController
@RequestMapping("/request")
public class HttpServletRequestController {
 
    @GetMapping("/getUrlValue")
    public String getUrlValue(HttpServletRequest request) {
        // 没有的时候不会报错,直接为null
        String msg = request.getParameter("msg");
        System.out.println(msg);
        return msg;
    }
 
    @GetMapping("/getUrlValues")
    public String getHttpServletRequestValue(HttpServletRequest request) {
        Map<String, String[]> parameterMap = request.getParameterMap();
        return JSONObject.toJSONString(request.getParameterMap());;
    }
}

总结

到此这篇关于Spring Boot中优雅地处理参数传递的技巧的文章就介绍到这了,更多相关SpringBoot处理参数传递技巧内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot详解实现自定义异常处理页面方法

    SpringBoot详解实现自定义异常处理页面方法

    SpringBoot是Spring全家桶的成员之一,是一种整合Spring技术栈的方式(或者说是框架),同时也是简化Spring的一种快速开发的脚手架
    2022-06-06
  • Spring Boot利用Java Mail实现邮件发送

    Spring Boot利用Java Mail实现邮件发送

    这篇文章主要为大家详细介绍了Spring Boot利用Java Mail实现邮件发送,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • Spring boot从安装到交互功能实现零基础全程详解

    Spring boot从安装到交互功能实现零基础全程详解

    这篇文章主要介绍了Spring boot从安装到交互功能得实现全程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 关于logBack配置日志文件及编码配置的问题

    关于logBack配置日志文件及编码配置的问题

    这篇文章主要介绍了logBack配置日志文件及编码配置的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • SpringBoot的ResponseEntity类返回给前端具体讲解

    SpringBoot的ResponseEntity类返回给前端具体讲解

    这篇文章主要给大家介绍了关于SpringBoot的ResponseEntity类返回给前端的相关资料,ResponseEntity是Spring框架中用于封装HTTP响应的类,可以自定义状态码、响应头和响应体,常用于控制器方法中返回特定数据的HTTP响应,需要的朋友可以参考下
    2024-11-11
  • Java SpringBoot集成ChatGPT实现AI聊天

    Java SpringBoot集成ChatGPT实现AI聊天

    ChatGPT已经组件放开了,现在都可以基于它写插件了,也许可以用它结合文字语音开发一个老人小孩需要的智能的说话陪伴啥的,这篇文章就介绍SpringBoot结合ChatGPT实现AI聊天感兴趣的同学可以借鉴一下
    2023-04-04
  • Java深入浅出掌握SpringBoot之MVC自动配置原理篇

    Java深入浅出掌握SpringBoot之MVC自动配置原理篇

    在进行项目编写前,我们还需要知道一个东西,就是SpringBoot对我们的SpringMVC还做了哪些配置,包括如何扩展,如何定制,只有把这些都搞清楚了,我们在之后使用才会更加得心应手
    2021-10-10
  • Java多态用法与注意点实例分析

    Java多态用法与注意点实例分析

    这篇文章主要介绍了Java多态用法与注意点,结合实例形式分析了java多态相关的向上转型、向下转型、隐藏等相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • Java面向对象类和对象实例详解

    Java面向对象类和对象实例详解

    面向对象乃是Java语言的核心,是程序设计的思想,这篇文章主要介绍了Java面向对象类和对象的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • IntelliJ IDEA引入第三方jar包或查看Java源码的时候报decompiled.class file bytecode version:52.0(java 8)错误的解决办法

    IntelliJ IDEA引入第三方jar包或查看Java源码的时候报decompiled.class file byt

    今天小编就为大家分享一篇关于IntelliJ IDEA引入第三方jar包或查看Java源码的时候报decompiled.class file bytecode version:52.0(java 8)错误的解决办法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10

最新评论