SpringBoot同时接收单个对象和List<object>参数

最近作项目的有个需求,是把多个文件移动到另外一个文件夹下,这须要把前端

  1. 新的文件夹id -- Long类型
  2. 多个文件的信息 -- List< Object > 类型

这两个参数传给后台,个人后台是SpringBoot,怎么接收都不行,上网找了好久也找不到答案。json

单纯地传入Long类型或者List< Object > 类型我都会,但两个放一块儿忽然就怎么试都报错。后端

过了一下子就想到了个奇葩的解决方案,虽然奇葩,可是可行,所以记录一下,但愿能帮到遇到一样问题的小伙伴。app

解决方案

后端

@RequestMapping("/moveToFolder/{folderid}")
public int moveToFolder(@PathVariable("folderid") Long folderid,@RequestBody List<Content> contents) {
	return 0;
}

@PathVariable 注解表示把上面的@RequestMapping("/moveToFolder/{folderid}")中的{folderid}的值注入参数folderid中。post

@RequestBody表示这个参数是一个JSON类型,这样SpringBoot不会把他当成字符串去解析。url

前端要求

前端日后台发送请求时要code

  1. 指定dataType: "json"
  2. 指定header: { 'content-type': 'application/json'}
  3. 指定method: "post"
  4. 在两个参数中,将单个的参数拼接在请求的链接后,将List类型用JSON.stringify转成字符串后放在请求的参数中。

好比我上面提到的两个参数,就能够这么传字符串

wx.request({
       url: "localhost:8080/folder/moveToFolder/"+folderid,
        data: JSON.stringify(contents),
        method: "post",
        dataType: "json",
        header: {
          'content-type': 'application/json'
        },
        success (res) {
          console.log(res);
        }
})

在我这个状况中,若是不把文件id拎出来用@PathVariable注解去把它放在访问连接后面被接收,就会报错,各类报错。string

若是有什么没看明白的能够留言。io

相关文章
相关标签/搜索