Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Express.js代理管道将XML转换为JSON_Javascript_Xml_Json_Express_Proxy - Fatal编程技术网

Javascript Express.js代理管道将XML转换为JSON

Javascript Express.js代理管道将XML转换为JSON,javascript,xml,json,express,proxy,Javascript,Xml,Json,Express,Proxy,对于我的前端(angular)应用程序,我需要连接到不支持CORS的外部API 因此,我的解决方法是在Node.JS/Express.JS中使用一个简单的代理来传递请求。另外一个好处是,我可以在代理级别设置api凭据,而不必将它们传递到前端,用户可能会在前端窃取/滥用它们 这一切都很完美 以下是代码,以供记录: var request = require('request'); var config = require('./config'); var url = config.api.e

对于我的前端(angular)应用程序,我需要连接到不支持CORS的外部API

因此,我的解决方法是在Node.JS/Express.JS中使用一个简单的代理来传递请求。另外一个好处是,我可以在代理级别设置api凭据,而不必将它们传递到前端,用户可能会在前端窃取/滥用它们

这一切都很完美

以下是代码,以供记录:

var request = require('request');
var config = require('./config');

var url   = config.api.endpoint;
var uname = config.api.uname;
var pword = config.api.pword;
var headers = {
    "Authorization" : 'Basic ' + new Buffer(uname + ':' + pword).toString('base64'),
    "Accept" : "application/json"
};

exports.get = function(req, res) {
  var api_url = url+req.url;
  var r = request({url: api_url, headers: headers});
  req.pipe(r).pipe(res);
};
我必须使用的API端点只有XML作为输出格式。因此,我在前端使用xml2js将XML响应转换为JSON

这也很好,但我希望减轻客户端的负载,并在服务器上执行XML->JSON解析步骤

我想我必须创造一些东西,比如:

req.pipe(r).pipe(<convert_xml_to_json>).pipe(res);
req.pipe(r.pipe().pipe(res);
但我不知道你是如何创造这样的东西的

因此,基本上,我希望在现有API的基础上创建一个XML到JSON代理层

关于“如何制作代理”和“如何将XML转换为JSON”有很多问题,但我找不到任何将两者结合起来的问题。

您需要使用,而对于XML到JSON的转换,您需要一些我使用的库

…然后你像这样使用它(简化了,但它也应该与请求一起工作)


谢谢这起作用了。让它工作起来有些困难,但后来我意识到我使用的是xml2js而不是xml2json。切换后,一切正常。回答得好。。伟大的你救了我一天!
var http = require('http');
var fs = require('fs');
var parser = require('xml2json');
var Transform = require('stream').Transform;


function xmlParser () {
  var transform = new Transform();
  transform._transform = function(chunk, encoding, done) {
    chunk = parser.toJson(chunk.toString())
    console.log(chunk);
    this.push(chunk);
    done();
  };

  transform.on('error', function (err) {
    console.log(err);
  });

  return transform;
}

var server = http.createServer(function (req, res) {
  var stream = fs.createReadStream(__dirname + '/data.xml');
  stream.pipe(xmlParser()).pipe(res);
});
server.listen(8000);