Api Node.js代理,能够更改响应头并注入额外的请求数据
我正在编写一个node.js代理服务器,为不同域上的API提供请求 我想用,我已经找到了 但是有没有一种方法可以根据条件(即添加API密钥)修改请求数据,并考虑到可能存在不同的方法请求-Api Node.js代理,能够更改响应头并注入额外的请求数据,api,node.js,node-http-proxy,Api,Node.js,Node Http Proxy,我正在编写一个node.js代理服务器,为不同域上的API提供请求 我想用,我已经找到了 但是有没有一种方法可以根据条件(即添加API密钥)修改请求数据,并考虑到可能存在不同的方法请求-GET,POST,UPDATE,DELETE 或者我搞乱了的目的,有更适合我的目的的东西吗?一种非常简单的方法是使用中间件 var http = require('http'), httpProxy = require('http-proxy'); var apiKeyMiddleware = func
GET
,POST
,UPDATE
,DELETE
或者我搞乱了的目的,有更适合我的目的的东西吗?一种非常简单的方法是使用中间件
var http = require('http'),
httpProxy = require('http-proxy');
var apiKeyMiddleware = function (apiKey) {
return function (request, response, next) {
// Here you check something about the request. Silly example:
if (request.headers['content-type'] === 'application/x-www-form-urlencoded') {
// and now you can add things to the headers, querystring, etc.
request.headers.apiKey = apiKey;
}
next();
};
};
// use 'abc123' for API key middleware
// listen on port 8000
// forward the requests to 192.168.0.12 on port 3000
httpProxy.createServer(apiKeyMiddleware('abc123'), 3000, '192.168.0.12').listen(8000);
请参阅以了解更多详细信息以及有关方法的一些注意事项。Steve,谢谢!它在标题方面是有意义的。有没有办法调整请求数据/正文本身,比如添加API令牌?@aliona我想你可以像上面那样使用request.body修改它,但也许你可以告诉我们在你使用的API中预期如何接收API密钥。通常,我希望它位于querystring或Header中。API希望API令牌位于querystring或请求正文中,具体取决于请求方法
GET
,POST
,UPDATE
或DELETE
@aliona所以你的问题是a)找出如何在将其放入正文与基于方法的查询字符串之间切换,或者b)如何附加到请求正文?我的问题主要与a有关。我只是想知道节点http代理
是否能在某个时候帮助我轻松地完成这项工作,这样我就可以停止“手动”操作了。目前我的步骤如下:1)找出请求方法;2) 根据方法,通过解析querystring或收集请求体来获取请求数据;3) 添加所需的标题,并根据需要调整请求数据;4) 对API的代理请求