[英]Request Stream Get + Post edited JSON body in Node.js
我是Node.js的新手,正在从事一个项目,我想使用Request从一个端点流到另一个端点。 我的目标是使用Request使用管道流获取和发布已编辑的JSON正文。 我知道这样做时,content-type和content-length将保留在POST标头中。 但是,我想将.forEach从第一个URL应用于正文中的所有JSON对象,并将它们发布到第二个URL。
我不确定正确的格式,不胜感激。
我知道基本语法是这样的:
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解析器模块,该模块可能不适用于您的用例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.