开发者

springboot接口接收数组及多个参数的问题及解决

目录
  • springb开发者_C学习oot接口接收数组及多个参数问题
  • springboot接收复杂集合参数,集合对象

springboot接口接收数组及多个参数问题

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

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

一般而言我们会想到

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

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

springboot接口接收数组及多个参数的问题及解决

params中似乎无法传数组呀

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

springboot接口接收数组及多个参数的问题及解决

于是,修改接口

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

问题解决~

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

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

{
	"abroad": {
		"id":5,
		"studenthttp://www.devze.comId":1,
		"projectName":"哈佛访学"
	},
	"params": ["id","studentId","projectName"]
}

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

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

但是这是错的!!

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

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

编程客栈决~

springboot接收复杂集合参数,集合对象

springboot中,我们有这样一个场景,就是接受前端复杂的对象数组,或者多个数组。

这是我们可以用@RequestBody注解,来解析请求体中的数据。但是值得注意的是在GET请求是不能进行该种方式的操作,因为GET请求没有请求体。

发送的请求类型不能是GET请求,可以POST,PUT,DELETE等请求。

前端发送数据的时候,请求内容格式必须设置为contentType:‘application/json;charset=utf-8’,默认是``contentType:‘www-form-urlencoded’`

上传的数据必须使用JSON.stringify(…)处理

后端接受参数前需要加注解@RequestBody,且每一个请求的参数里面最多只能有一个该注解

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜