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

相關文章
相關標籤/搜索