繁体   English   中英

在Node.js中请求流Get + Post编辑的JSON正文

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM