最近做項目的有個需求,是把多個文件移動到另一個文件夾下,這需要把
- 新的文件夾id -- Long類型
- 多個文件的信息 -- 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不會把他當成字符串去解析。
前端要求
前端往后台發送請求時要
- 指定
dataType: "json" - 指定
header: { 'content-type': 'application/json'} - 指定
method: "post" - 在兩個參數中,將單個的參數拼接在請求的連接后,將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注解去把它放在訪問鏈接后面被接收,就會報錯,各種報錯。
如果有什么沒看明白的可以留言。
