• SpringBoot getpost请求详解


    目录

    一、普通参数形式

    基本数据类型(以int为例)

    ?包装类型参数绑定

    自定义对象类型参数绑定

    自定义复合对象类型参数绑定

    List参数绑定

    Map参数绑定

    @RequestParam注解解析

    1)参数限制(可用required=false关闭)

    2)设置参数默认值

    3)自定义参数名称

    数组类型参数绑定

    1)基本数组类型接收参数

    2)List类型接收参数

    二、POST请求:Json模式参数绑定

    1、@RequestBody注解解析

    2、json模式直接绑定自定义对象类型

    3、json模式直接绑定自定义复合对象类型

    4、json模式绑定数组类型(一般用于批量操作)

    5、json模式绑定多个对象(参数类型相同)

    1)使用List获取

    2)使用Map接收


    本文介绍基于SpringBoot下get/post请求

    一、普通参数形式

    基本数据类型(以int为例)

    在controller中写一个int参数绑定的方法

        @GetMapping("/getInt")
        public String getInt(int id){
            return "ID = " + id;
        }
    
    • 1
    • 2
    • 3
    • 4

    总结:

    1)用基本类型进行参数绑定时,就必须传入key值,且value值必须是声明的基本类型,如果页面提交的数据为null或“”的话会出现数据转换异常,因此最好使用包装类型参数

    2)前端的参数名和controller的参数名保持一致时就能完成数据绑定,不一致可以使用@RequestParam

        @GetMapping("/getInt2")
        public String getInt2(@RequestParam(value = "ik") int id){
            return "IK = " + id;
        }
    
    • 1
    • 2
    • 3
    • 4

    包装类型参数绑定

    在controller中写多个包装类型参数绑定的方法

        @GetMapping(value = "/getUser",produces = {"application/json;charset=UTF-8"})
        public String  getUser(String name,Integer age){
            return "name = " + name + " age = " + age;
        }
    
    • 1
    • 2
    • 3
    • 4

    总结:

    1)包装类型绑定参数时和基本数据类型一样,传的key值要和里面绑定的参数名一致

    2)包装类型绑定参数时参数的值可以不传为null,也可以为空

    自定义对象类型参数绑定

        @GetMapping("/getImtes")
        public Items getImtes(Items items){
            return items;
        }
    
    • 1
    • 2
    • 3
    • 4

    总结:1)只要将对象的属性名和前端的input的参数名一致即可

    自定义复合对象类型参数绑定

        @GetMapping(value = "/getOrderForm",produces = {"application/json;charset=utf-8"})
        public OrderForm getOrderForm(OrderForm orderForm){
            return orderForm;
        }
    
    • 1
    • 2
    • 3
    • 4

    总结:

    1)自定义复合对象类型和自定义对象类型是一样的用法

    2)自定义复合对象类型前端input的参数名要使用“属性名(对象类型的属性).属性名"来命名

    List参数绑定

    @GetMapping(value = "/getIds",produces = {"application/json;charset=utf-8"})
    public List getIds(@RequestParam("ids") List ids){
       return ids;
    }
    
    • 1
    • 2
    • 3
    • 4

    总结:

    1)前端传送通过逗号隔开

    Map参数绑定

        @GetMapping(value = "/getMap")
        public Map getMap(@RequestParam  Map map){
            return map;
        }
    
    • 1
    • 2
    • 3
    • 4

    总结:

    1)需要RequestParam注解

    @RequestParam注解解析

    @RequestParam注解的作用有参数限制、设置参数默认值、自定义参数名称

    1)参数限制(可用required=false关闭)

        @GetMapping(value = "/getName",produces = {"application/json;charset=utf-8"})
        public String getName(@RequestParam(required = false) String name){
            return name;
        }
    
    • 1
    • 2
    • 3
    • 4

    2)设置参数默认值

        @GetMapping("/defaultValue")
        public Integer defaultValue(@RequestParam(defaultValue = "100") Integer num){
            return num;
        }
    
    • 1
    • 2
    • 3
    • 4

    3)自定义参数名称

    大家可自行尝试

    总结:

    1)@RequestParam注解设置更改参数名称、设置参数限制以及设置参数默认值,可根据不同场景使用

    2)@RequestParam可以多个使用

    数组类型参数绑定

    1)基本数组类型接收参数

        @GetMapping("/getArray")
        public String[] getArray(String[] arr){
            return arr;
        }
    
    • 1
    • 2
    • 3
    • 4

    总结:很简单,直接用数组类型接收即可

    2)List类型接收参数

        @GetMapping("/getList")
        public List getList(@RequestParam List names){
            return names;
        }
    
    • 1
    • 2
    • 3
    • 4

    总结:1)不可以缺少@RequestParam注解,否则会报错

    二、POST请求:Json模式参数绑定

    由于前后端分离以及前端的多样性,通常我们使用json数据格式进行参数/数据传递,说到json格式,就得先说一下@RequestBody,这个是使用Json模式进行参数绑定必不可少的一环

    1、@RequestBody注解解析

    1)@RequestBody注解的作用将json格式的数据转为java对象

    2)@RequestBody常用其来处理application/json类型

    3)@RequestBody接收的是一个json格式的字符串

    2、json模式直接绑定自定义对象类型

    @PostMapping("/postItems")
    public Items postItems(@RequestBody Items items){
       return items;
    }
    
    • 1
    • 2
    • 3
    • 4

    总结:

    1)直接json字符串转换成javaBean,但是前端传的一定是json格式的数据

    2)参数名必须和实体类定义的属性名一直才可以正确获取参数

    3、json模式直接绑定自定义复合对象类型

        @PostMapping(value = "/postOrderForm",produces = {"application/json;charset=utf-8"})
        public OrderForm postOrderForm(@RequestBody OrderForm orderForm){
            return orderForm;
        }
    
    • 1
    • 2
    • 3
    • 4

    总结:

    1)两者都需要参数名和实体类定义的属性名一致

    2)直接获取的方式,层级的参数名需要用.指定;@RequestBody形式参数json格式需要用嵌套的形式

    4、json模式绑定数组类型(一般用于批量操作)

    controller使用@RequestBody+List接收数组(推荐)

        @PostMapping("/postIds")
        public List postIds(@RequestBody List ids){
            return ids;
        }
    
    • 1
    • 2
    • 3
    • 4

    总结:

    1)@RequestBody获取List数组类型参数使用比较广泛

    2)后续可以将list中的内容转化为String类型,以","分割

    5、json模式绑定多个对象(参数类型相同)

    1)使用List获取

        @PostMapping("/postItemList")
        public List postItemList(@RequestBody List items){
            return items;
        }
    
    • 1
    • 2
    • 3
    • 4

    2)使用Map接收

        @PostMapping("/postMapItems")
        public Map postMapItems(@RequestBody Map map){
            return map;
        }
    
    • 1
    • 2
    • 3
    • 4

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    猿创征文 | C++基础学习一
    基于SSM的电动车上牌管理系统设计与实现
    Docker入门学习(笔记1)
    WEB网络渗透的基础知识
    LINUX异常栈初始化
    Qt Quick Layouts Overview
    如何通过MES系统提高生产计划效率?
    【网络编程】高并发服务器|网络套接字函数|TCP服务器函数-大端小端
    Techempower web框架性能测试第21轮结果发布--asp.net core继续前进
    新建项目Group和Artifact该如何写
  • 原文地址:https://blog.csdn.net/begefefsef/article/details/126114224