springboot|Controller 接收处理 GET,POST 请求入参

本贴最后更新于 1820 天前,其中的信息可能已经天翻地覆

javaDEMO

本网站记录了最全的各种 JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring 的, Mybatis 的等等各种,助力你从菜鸟到大牛,记得收藏哦~~
https://www.javastudy.cloud

Controller 接收入参

入参通常来说分两个情况,一种是 Get, 一种是 POST

Get 请求的入参处理

/**
 * @Author https://www.javastudy.cloud
 * @CreateTime 2019/11/3
 **/
@RestController
public class ParamController {

    /**
     * 这里使用了 GetMapping 和 @RequestMapping(method = RequestMethod.GET)是一样的
     * 在方法入参的位置,把每个参数都平铺开来
     * @return
     */
    @GetMapping("param/handleGetParam1")
    public String handleGetParam1(String param1, String param2){
        String result = String.format("in handle1 param1 is %s, param2 is %s", param1, param2);
        return result;
    }

    /**
     * 把入参封装成一个实体,如果请求参数过多,一般大于5个时,用这种方法
     * @param demo
     * @return
     */
    @GetMapping("param/handleGetParam2")
    public String handleGetParam2(ParamDemo demo){
        String result = String.format("in handle2 param1 is %s, param2 is %s", demo.param1, demo.param2);
        return result;
    }

    /**
     * 使用静态内部类,简单定义一个入参实体类
     */
    static class ParamDemo{
        private String param1;
        private String param2;

        public String getParam1() {
            return param1;
        }

        public void setParam1(String param1) {
            this.param1 = param1;
        }

        public String getParam2() {
            return param2;
        }

        public void setParam2(String param2) {
            this.param2 = param2;
        }
    }
}

结果如下:
image.png
image.png

post 请求入参处理

/**
     * Post 请求入参也可以这样平铺使用
     * 一般适用于前端Header中Content-Type为application/x-www-form-urlencoded的场景
     * @param param1
     * @param param2
     * @return
     */
    @PostMapping("param/handlePostParam1")
    public String handlePostParam1(String param1, String param2){
        String result = String.format("in handle1 param1 is %s, param2 is %s", param1, param2);
        return result;
    }

    /**
     * 入参为一个实体类的形式,没有任何注解
     * 一般适用于参数个数较多,在Header中Content-Type为application/x-www-form-urlencoded的场景
     * @param demo
     * @return
     */
    @PostMapping("param/handlePostParam2")
    public String handlePostParam2(ParamDemo demo){
        String result = String.format("in handle2 param1 is %s, param2 is %s", demo.param1, demo.param2);
        return result;
    }

    /**
     * 请求入参是一个实体,并且加上了 @RequestBody
     * 一般适用于前端Header中Content-Type 为 application/json的场景
     * 注意入参要是json格式
     * @param demo
     * @return
     */
    @PostMapping("param/handlePostParam3")
    public String handlePostParam3(@RequestBody ParamDemo demo){
        String result = String.format("in handle2 param1 is %s, param2 is %s", demo.param1, demo.param2);
        return result;
    }

PostMan 模拟请求结果如下:
模拟时注意修改 Header 中 Content-Type 的值
image.png
image.png
模拟时注意修改 Header 中 Content-Type 的值
image.png
image.png

DEMO 总评

入参处理这块不是很复杂,主要是要和前端的 Header 中的 Content-Type 对应,本次 DEMO 只讲了 String 类型的入参处理,后面会分享文件,数组等复杂类型的入参处理. 还有一种入参是 @PathVariable 的形式,这种在实际入开发中使用的少之又少,可以学习,不推荐实际开发中使用.加油吧!

DEMO 代码下载

demospringbootparam.zip

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3186 引用 • 8212 回帖
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    942 引用 • 1459 回帖 • 31 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...