Узлы, как передавать multipart / form-data между сервисами - PullRequest
0 голосов
/ 01 октября 2019

У меня есть этот дизайн:

Front end => Middle layer service => Micro service

Я хочу создать uploadFile вызов. Если я иду по этому пути Front end => Micro service, то мой вызов работает совершенно нормально (он загружает файл правильно), но когда я иду по указанному выше пути, он не работает.

Внешний интерфейс:

var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() { 
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
        resolve(xmlHttp.responseText);
    }
}

var data = new FormData();
data.append('file', event.target.files[0]);

xmlHttp.open('POST', '.../utUploadFile');
xmlHttp.send(data);

Микро сервис:

app.post('/utUploadFile', async (request, response, next) => {
    const form = new formidable.IncomingForm();

    form.parse(request, async function (err, fields, files) {
        ...
    });
});

Сервис среднего уровня: (в этом и заключается моя проблема)

const http = require('request');
...
app.post(`/utUploadFile`, (request, response, next) => {
    http.post({
        headers: {'content-type': 'multipart/form-data'},
        url: `.../utUploadFile`,
        body: JSON.stringify(request.body)
    }, (err, res, body) => {

    });
});

Я не знаю, какими должны быть настройки, но яЯ уверен, что это связано с content-type и / или body: JSON.stringify(request.body)

...