Javascript 请求流Get+;Node.js中后期编辑的JSON正文
我是Node.js新手,正在从事一个项目,我想使用请求从一个端点流到另一个端点。我的目标是使用请求获取并发布一个使用管道流编辑的JSON主体。我知道这样做时,文章标题中会保留内容类型和内容长度。但是,我希望将.forEach从第一个url应用到正文中的所有JSON对象,并将它们发布到第二个url 我不确定格式是否正确,请澄清一下 我知道基本语法如下:Javascript 请求流Get+;Node.js中后期编辑的JSON正文,javascript,json,node.js,xmlhttprequest,Javascript,Json,Node.js,Xmlhttprequest,我是Node.js新手,正在从事一个项目,我想使用请求从一个端点流到另一个端点。我的目标是使用请求获取并发布一个使用管道流编辑的JSON主体。我知道这样做时,文章标题中会保留内容类型和内容长度。但是,我希望将.forEach从第一个url应用到正文中的所有JSON对象,并将它们发布到第二个url 我不确定格式是否正确,请澄清一下 我知道基本语法如下: request.get('URL').pipe(request.post('URL')); 到目前为止,我最好的猜测是这样的: request(
request.get('URL').pipe(request.post('URL'));
到目前为止,我最好的猜测是这样的:
request('FIRST_URL', function (error, response, body) {
body = JSON.parse(body);
body.forEach( function(arg) {
//return edited body
});
}).pipe(request.post('SECOND_URL'));
我错过什么了吗?有更好的方法吗?您可以编写自己的转换流。例如:
var Transform = require('stream').Transform;
var inherits = require('util').inherits;
function JSONTransform() {
Transform.call(this);
this._bufffer = '';
}
inherits(JSONTransform, Transform);
JSONTransform.prototype._transform = function(chunk, enc, cb) {
this._buffer += chunk;
cb();
});
JSONTransform.prototype._flush = function(cb) {
try {
var result = JSON.parse(this._buffer);
this._buffer = null;
// Do whatever transformations
// ...
this.push(JSON.stringify(result));
cb();
} catch (ex) {
cb(ex);
}
});
// Then just pipe
request.get('FIRST_URL')
.pipe(new JSONTransform())
.pipe(request.post('SECOND_URL'));
另一个值得考虑的稍有不同的解决方案是使用第三方流式JSON解析器模块,它可能适用于您的用例,也可能不适用于您的用例