专栏首页java技术大本营springboot|Controller接收处理GET,POST请求入参

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

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

结果如下:

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

模拟时注意修改Header中Content-Type的值

DEMO总评

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

本文分享自微信公众号 - java技术大本营(java-ideashare),作者:微笑的小小刀

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java练习本(2019-07-06)

    String类型会指向堆内存中的存储空间,因此当通过==对String类型进行比较时,比较的是相应变量的地址。只要指向的是同一地址则两个String类型==比较...

    微笑的小小刀
  • java练习本(2019-07-08)

    String str = new String("xiaodao");这个语句一共会创建几个String object?

    微笑的小小刀
  • java练习本(2019-07-21)

    “ Love is the greatest refreshment in life. ”

    微笑的小小刀
  • spring-boot-2.0.3之quartz集成,不是你想的那样哦!

        晚上回家,爸妈正在吵架,见我回来就都不说话了,看见我妈坐在那里瞪着我爸,我就问老爸“你干什么了惹我妈生这么大气?”  我爸说“没有什么啊,倒是你,这么大...

  • 再谈java乱码:GBK和UTF-8互转尾部乱码问题分析

    一直以为,java中任意unicode字符串,可以使用任意字符集转为byte[]再转回来,只要不抛出异常就不会丢失数据,事实证明这是错的。

    pollyduan
  • 数据驱动的服装租赁公司

    大数据文摘
  • 聊聊MaxwellKafkaPartitioner

    maxwell-1.25.1/src/main/java/com/zendesk/maxwell/producer/partitioners/MaxwellKa...

    codecraft
  • 聊聊MaxwellKafkaPartitioner

    maxwell-1.25.1/src/main/java/com/zendesk/maxwell/producer/partitioners/MaxwellKa...

    codecraft
  • OpenBox项目及相关介绍

    知道OpenBox源于SIGCOMM 2016的会议,这个会议的影响力在计算机和通信领域的专家相信都知道,CCF推荐的A类会议,一年接收文章的数量也就在30篇左...

    SDNLAB
  • dotnet 删除只读文件

    如果直接通过 File.Delete 删除只读文件会出现没有权限提示,可以先设置文件不是只读然后删除文件

    林德熙

扫码关注云+社区

领取腾讯云代金券