SpringBoot用实体接收Get请求传递过来的多个参数(绝对可用)

Posted 地表最强菜鸡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot用实体接收Get请求传递过来的多个参数(绝对可用)相关的知识,希望对你有一定的参考价值。

最近项目中Controller层查询接口需要通过实体来接受前端传过来的多个参数(Get请求),这个问题困扰了我很久,之前在第二家公司的时候,就因为我后端是Get请求,并且是通过实体去接收前端参数的,导致我当天上线搞到半夜没搞好,这次又遇到,势必解决它。

一年前,通过查看大量的坑爹文章,发现网上没有一篇有效的,这次通过阿里主管的协助,成功的通过实体接收到了Get请求传递过来的参数,而且是发现了两种方法。

一、Controller层不带任何注解接收参数

第一种方法是最简单的,严重怀疑以前怎么没有用,谁知道呢。。不过这次是真的管用了,最简单的方式就是Controller接口入参不加任何注解!!!SpringBoot自动做了处理。代码如下:

/**
 * @author zhangzhixiang
 * @since v1.0.0
 */
@RestController
@RequestMapping(path = "/ui/institution")
public class InstitutionManagementController {

    @GetMapping(value = "/pageQueryForAssign")
    public void pageQueryInstitutionsForAssign(InstitutionQueryDTO queryDTO) {

    }
}

其实重点就是InstitutionQueryDTO旁边没有任何注解,这样前端正常传Get参数就好,前端传参格式示例如下:

    http://192.168.63.125/ui/institution/pageQueryForAssign?name='xxx'&sex='男'

这里的name和sex是InstitutionQueryDTO实体中的属性,SpringBoot会帮我们自动填充到实体中。

二、Controller层通过@ModelAttribute接收参数

这个写法是在网上阅读文章找到的,这种方法我也记录一下。

/**
 * @author zhangzhixiang
 * @since v1.0.0
 */
@RestController
@RequestMapping(path = "/ui/institution")
public class InstitutionManagementController {

    @GetMapping(value = "/test")
    public void test(@ModelAttribute InstitutionQueryDTO queryDTO){

    }
}

这里的重点是@ModelAttribute注解,他也会将前端传过来的参数填充到业务实体中,前端传参格式与方法一相同。

我一年前应该也有通过第一种方式来接受Get请求的参数,但是失败了没有接收到,我失败的原因应该是我的Controller同时接收多个实体入参,所以失败了。

这个问题挺恶心人的,各位如果搜到我的文章,并且解决了你的问题,记得给个好评。

以上是关于SpringBoot用实体接收Get请求传递过来的多个参数(绝对可用)的主要内容,如果未能解决你的问题,请参考以下文章

springboot @RequestBody注解学习

在struts2中如何接收ajax传过来的参数

Asp.net中怎么接收post方式提交过来的数据?

如何在WebAPI的控制器的GET请求中传递参数

利用postman完成JSON串的发送功能(springboot)

SpringBoot 接收Get请求个别参数可能为空的解决方案