springboot接口接收数组及多个参数的解决方案

    技术2022-07-10  153

    本例为个人经历,必然存在认知局限与不足,欢迎指正以及提供更好方法。 

     

    若接口中需要接受数组,那么接口应该如何写呢?

    一般而言我们会想到

    @PostMapping("/xxxx") public String test(List list){ do sth; }

    假设我们写的接口正确,写完接口我希望使用postman来测试一下

    params中似乎无法传数组呀

    诶?在body中用json格式传参数不就好了吗!

    于是,修改接口

    @PostMapping("/xxxx") public String test(@RequestBody List list){ do sth; }

    问题解决~

    但是往往我们写接口的时候需要接收的参数不止简单数组,有可能是一个非常复杂的对象。

    这里我们将问题假设为需要接收的参数为对象+数组,如下。

    { "abroad": { "id":5, "studentId":1, "projectName":"哈佛访学" }, "params": ["id","studentId","projectName"] }

    自然地,我们一般会这么想:

    @PostMapping("/xxxx") public String test(@RequestBody Abroad abroad,@RequestBody List<String> params){ do sth; }

    但是这是错的!!

    如果使用@RequestBody,只允许有一个参数。那希望上传多个对象怎么办呢?对!就是包个对象!!类似下面这样:

    @PostMapping("/xxxx") public String test(@RequestBody ParaDTO paraDTO){ do sth; } class ParaDTO{ Abroad abroad; List<String> params; }

    解决~

    Processed: 0.009, SQL: 9