【发布时间】:2020-06-16 23:09:36
【问题描述】:
我正在尝试将 Express 请求直接传递到 Axios 请求中。我将此端点更多地用作代理或中继,尽管我必须修改请求的标头,即Authorization 和Cookie 标头。我也以不必使用任何磁盘空间或 RAM 空间的方式转发此内容。我之前确实问过a question like this,但它是针对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 请求参数“fileHash”用于 Bearer 令牌,我尝试将请求通过管道传递给 Axios,但这不起作用,并且出现以下错误:
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)
我试图切换它并使用响应来传输数据,但这意味着我不会将请求正文流式传输到 Axios 请求。我还没有找到任何其他解决方案。任何帮助将不胜感激。
【问题讨论】:
-
我的回答是否帮助您解决了问题?
-
它确实可以转发响应,但我还必须转发存储在请求正文中的数据。我忘了在问题中添加这个。道歉。
标签: javascript node.js express axios node-streams