SpringBoot同時接收單個對象和List<object>參數


最近做項目的有個需求,是把多個文件移動到另一個文件夾下,這需要把

  1. 新的文件夾id -- Long類型
  2. 多個文件的信息 -- List< Object > 類型

這兩個參數傳給后台,我的后台是SpringBoot,怎么接收都不行,上網找了很久也找不到答案。

單純地傳入Long類型或者List< Object > 類型我都會,但兩個放一起突然就怎么試都報錯。

過了一會兒就想到了個奇葩的解決方案,雖然奇葩,但是可行,因此記錄一下,希望能幫到遇到同樣問題的小伙伴。

解決方案

后端

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

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

@RequestBody表示這個參數是一個JSON類型,這樣SpringBoot不會把他當成字符串去解析。

前端要求

前端往后台發送請求時要

  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注解去把它放在訪問鏈接后面被接收,就會報錯,各種報錯。

如果有什么沒看明白的可以留言。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM