2015-07-21 30 views
1

我使用Express路由器和Multer中間件來處理多個正文數據和文件,並使用NODEjs構建REST API。POST請求通過requestJS發送JSON對象和圖像文件數組

我的端點路徑127.0.0.1/api/postData期望:帶有字段的json數據,其中之一是json對象數組(我有嵌套貓鼬模式)和2個命名圖像(png/jpg)。

我需要通過捲曲發送請求後與以下5個對象的數據結構:

name String 
description String 
usersArray Array of json objects like: [{"id": "123"}, {"id": "456}] 
imgIcon Png/Image providing /path/to/imageIcon.png 
imgHeader Png/Image  providing /path/to/imageHeader.png 

不知道如何編寫一個帶request.js節點HTTP請求庫的幫助這個要求嗎?

回答

3

嘗試以下操作:

request.post({ 
    url:'http://127.0.0.1:7777/api/postData' 
    , formData: formData 
    , qsStringifyOptions : { 
     arrayFormat : 'brackets' // [indices(default)|brackets|repeat] 
    } 
}, function (err, httpResponse, body) { 
// do something... 
} 

https://www.npmjs.com/package/qs(由https://www.npmjs.com/package/request使用)發現三個選項arrayFormat:

'indices' sends in postbody: (this is the default case) 
usersArray%5B0%5D%5Bid%5D=a667cc8f&usersArray%5B1%5D%5Bid%5D=7c7960fb 
decoded: 
usersArray[0][id]=a667cc8f&usersArray[1][id]=7c7960fb 

'brackets' sends in postbody: 
usersArray%5B%5D%5Bid%5D=a667cc8f&usersArray%5B%5D%5Bid%5D=7c7960fb 
decoded: 
usersArray[][id]=a667cc8f&usersArray[][id]=7c7960fb 

'repeat' sends in postbody: 
usersArray%5Bid%5D=a667cc8f&usersArray%5Bid%5D=7c7960fb 
decoded: 
usersArray[id]=a667cc8f&usersArray[id]=7c7960fb 

這三種不同的方式,在發佈前序列化陣列。基本上它取決於接收端如何這些需要/可以格式化。在我的情況下,它有助於使用'括號'

+0

謝謝你HerrZatacke,它幫助! – JavaJedi

相關問題