drm*_*wer 13 javascript node.js node-streams axios
目前,我正在执行将请求req传送到目标 url 并将响应传送回的技巧res,如下所示:
const request = require('request');
const url = 'http://some.url.com' + req.originalUrl;
const destination = request(url);
// pipe req to destination...
const readableA = req.pipe(destination);
readableA.on('end', function () {
// do optional stuff on end
});
// pipe response to res...
const readableB = readableA.pipe(res);
readableB.on('end', function () {
// do optional stuff on end
});
Run Code Online (Sandbox Code Playgroud)
由于request现在已正式弃用(boo hoo),使用gaxios 库是否可以使用此技巧?我认为responseType: 'stream'对请求的设置会做与上面类似的事情,但它似乎不起作用。
同样,gaxios 可以在以下上下文中使用:
request
.get('https://some.data.com')
.on('error', function(err) {
console.log(err);
})
.pipe(unzipper.Parse())
.on('entry', myEntryHandlerFunction);
Run Code Online (Sandbox Code Playgroud)
我想如果您提供responseTypeasstream并使用res.data,您将得到一个可以像这样进行管道传输的流
const {request} = require("gaxios");
const fs = require("fs");
const {createGzip} = require("zlib");
const gzip = createGzip();
(async () => {
const res = await request({
"url": "https://www.googleapis.com/discovery/v1/apis/",
"responseType": "stream"
});
const fileStream = fs.createWriteStream("./input.json.gz");
res.data.pipe(gzip).pipe(fileStream);
})();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9785 次 |
| 最近记录: |