get 加body体传参

get 加body体传参

场景:

     做业务的时候经常会遇到这样的场景,比如传统业务查询的时候,
     get 请求但是需要加好几个请求过滤参数,在加上分页的话,参数的确有点多,
     @ RequestParam (用此注解把请求普通参数绑定在控制的方法上),
     看起来不美观,写起来麻烦,感觉很low,       
     如果用一个对象,或者map接收多好,干净又利落。

为啥这么做?可以实现吗?

 1.问题在举的场景里面已做了简单的分析
 2.首先官方不推荐这样做,但是http(基于tcp的超文本传输协议)并没有规定,get 请求不能加body
 3.大家最关心的问题来了,能否实现,的确能实现,而且spring是支持的

怎么去实现?

  1. 用对象或者map接收参数,我们想到的就以 @RequestBody 注解以json 体的形式接收
  2. 需要注意的是此处要用 @RequestParam 注解来接收对象和Map参数对象
  3. 请求方式仍然是 get

常见的报错 ?

  1. 返回状态码 400(Bad Request)
    答: 报着错误就是传参错误
#####   a. 比如接收的实体对象字段不一样
        b. 传的参数格式不一样,需要的json

实现案例

  1. 后台实现 (伪代码)
    @GetMapping("/路径")
    public Dto queryDataList(@RequestParam Map<String,Object>() params ){

       return new Dto();
    

    }
    Dto:(数据分装传输对象)
    queryDataList:(方法名)
    @RequestParam Map<String,Object>() params : (注解传参)

  2. postman 测试结果(postMan版本过低测不了,get方式 body 是灰色的。选新的版本)
    get 加body体传参

谢谢,欢迎指教

上一篇:golang API 请求队列


下一篇:vue往后端传值方法。@Requestparam和@Requestbody的区别