我正在编写一个 node.js 代理服务器,为不同域上的 API 提供请求。
我想使用node-http-proxy并且我已经找到了修改响应标头的方法。
但是有没有办法根据条件修改请求数据(即添加 API 密钥)并考虑到可能有不同的方法 request - GET
, POST
, UPDATE
, DELETE
?
或者,也许我搞乱了node-http-proxy的目的,而有什么更适合我的目的?
我正在编写一个 node.js 代理服务器,为不同域上的 API 提供请求。
我想使用node-http-proxy并且我已经找到了修改响应标头的方法。
但是有没有办法根据条件修改请求数据(即添加 API 密钥)并考虑到可能有不同的方法 request - GET
, POST
, UPDATE
, DELETE
?
或者,也许我搞乱了node-http-proxy的目的,而有什么更适合我的目的?
一种使其变得非常简单的方法是使用中间件。
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);
有关更多详细信息以及有关该方法的一些注意事项,请参阅Node-HTTP-Proxy、Middlewares 和 You 。