Передать Express запрос на Ax ios POST запрос - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь передать запрос Express прямо в запрос Ax ios. Я использую эту конечную точку в качестве прокси или ретранслятора, хотя мне нужно изменить заголовки запроса, а именно заголовки Authorization и Cookie. Я также передаю это таким образом, что мне не нужно использовать дисковое пространство или пространство ОЗУ. Я задавал вопрос, подобный этому , но это было для request-promise, с которого я переключаюсь. Код не работает, когда я заменяю переменные, поэтому он на самом деле не работает. Пока что у меня есть это:

app.get('/', async (req, res) => {
    await axios({
        method: 'post',
        url: 'https://example.com/json_upload',
        responseType: "stream",
        headers: {
           'Authorization': 'Bearer ' + req.params["fileHash"]
        }
    }).then((res) => {
        req.pipe(res.data);
    });
});

Как вы можете видеть, Express параметр запроса "fileHa sh" используется для токена Bearer, и я попытался передать запрос Ax ios, но это не работает, и я получаю следующую ошибку:

TypeError: dest.end is not a function
    at IncomingMessage.onend (_stream_readable.js:671:10)
    at Object.onceWrapper (events.js:286:20)
    at IncomingMessage.emit (events.js:203:15)
    at endReadableNT (_stream_readable.js:1145:12)
    at process._tickCallback (internal/process/next_tick.js:63:19)

Я попытался переключить его и использовать ответ для передачи данных, но это означает, что я не буду транслировать тело запроса на топор ios запрос. Я не нашел другого решения для этого. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 04 марта 2020

Вам нужно сделать axiosResponse.data.pipe(res);. Также вы можете удалить async/await, используя .then.

app.get('/', (req, res) => {
   axios({
        method: 'post',
        url: 'https://example.com/json_upload',
        responseType: "stream",
        headers: {
           'Authorization': 'Bearer ' + req.params["fileHash"]
        }
    }).then((axiosResponse) => {
        axiosResponse.data.pipe(res);
    });
});
...