spring接口关于用多个参数接收json的问题

问题原因

前端准备发送一组json对象,然后我想在后端分别接成2个参数,直接上手通过**@RequestBody**获取参数,直接解析成两个参数,试了一下好像不行

在这里插入图片描述


错误的代码示范
这里我想使用两个参数接收json数据,发现不能

    @PostMapping("/getFileListByUserId")
    public String getFileListByUserId(@RequestBody UserDto userDto,@RequestBody String userObj) throws Exception {


        System.out.println(userDto);
//        System.out.println(userId);
//        System.out.println(userName);


        return "userId:"+ "asdasd";
    }

解决方案

这里参口了别人的资料http://www.javashuo.com/article/p-acldahwq-co.html

根据别人资料发现的问题原因@RequestBody只能读取一次body信息

  • 这里我没有研究过RequestBody源码
  • 不过在用gateway网关做过滤器的时候,,研究了好久spring中的HttpServletRequest对象,他确实只能取出一次body信息,还涉及到了响应式那套,flux、mono什么的,看的头大
  • 在过滤器中取body信息,确实只能取一次,然后就无法读取了,这个过滤器

本来想偷懒直接使用注解分成两个参数,还是老老实实些map接收自己转换数据吧

    @PostMapping("/getFileListByUserId")
    public String getFileListByUserId(@RequestBody Map<String,Object> map) throws Exception {


        System.out.println(map);


        return "userId:"+ "asdasd";
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值