我想從我的Node JS應用程序將圖像發佈到另一個REST API。我在Mongo DB中具有圖像(作爲二進制數組數據),它由Node JS讀取,然後應該被髮送到另一個API。節點JS如何將POST圖像和請求數據一起發送到另一個服務器/ api
我面對的問題是如何隨圖像一起發送請求數據?我有這樣的原始數據(即JSON格式),應與圖像一起發佈時間:
{"data":{"client":"abc","address": "123"},"meta":{"owner": "yourself","host": "hostishere"}}
我需要做到這一點使用「請求」模塊。如果這有助於更好的話,我可以使用'multer'。但是,我堅持如何將上述請求數據與圖像流一起發送。以下是我目前的代碼。你能幫我完成嗎?
var options = {
host: 'hostname.com',
port: 80,
path: '/api/content',
method: 'POST',
headers:{
'Content-Type' : 'multipart/form-data'
}
};
var request = http.request(options, function(response) {
var str = '';
var respTime ='';
response.on('data', function (chunk) {
str = str.concat(chunk);
});
response.on('end',() => {
console.log('No more data in response.');
});
setTimeout(function() {
res.send(JSON.stringify(
{
'imageURL': IMG_URL,
'imageId': IMG_ID,
'body': JSON.parse(str)
}
));
}, 1000);
});
request.on('error', (e) => {
console.error('**** problem with request: ', e);
});
request.write(image.IMG_STR); //image.IMG_STR is the binary array representation of the image.
request.end();
更新:2017年6月6日
所以,我正好跟我們的REST團隊提供了終點,並發現該數據應在以下具體格式發送。以下是成功請求的快照。有人可以幫我使用我應該使用的Node代碼嗎?我已經嘗試過表單數據包但是得到了同樣的錯誤:
爲什麼超時?你應該在'end'事件監聽器中發送你的響應。如果您的請求花費的時間超過1秒,響應將不會完成 –
@JonasZell感謝您指出request.end()的正確用法以及爲什麼應避免使用setTimeout。將進行更改以改進這段代碼。回到你的另一個問題,'res'實際上是請求的響應對象,它調用上述代碼存在的方法(請求從UI到上述代碼,然後調用另一個API) – rajugaadu
對不起...這是針對另一個成員的 - 「回到你的另一個問題,'res'實際上是請求的響應對象,它調用上面的代碼存在的方法(一個請求來自UI到上面的代碼,然後應該調用另一個API)「 – rajugaadu