【发布时间】:2015-04-23 06:52:55
【问题描述】:
对于我的前端(角度)应用,我需要连接到不支持 CORS 的外部 API。
所以我解决这个问题的方法是在 Node.JS / Express.JS 中有一个简单的代理来传递请求。额外的好处是我可以在代理级别设置我的 api-credentials,而不必将它们传递到用户可能窃取/滥用它们的前端。
这一切都很完美。
这是代码,供记录:
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);
但我不知道如何创建这样的东西。
所以基本上我希望在现有 API 之上创建一个 XML 到 JSON 代理作为层。
关于“如何制作代理”和“如何将 XML 转换为 JSON”有很多关于 SO 的问题,但我找不到将两者结合起来的任何问题。
【问题讨论】:
标签: javascript xml json express proxy