Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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
Api Node.js代理,能够更改响应头并注入额外的请求数据_Api_Node.js_Node Http Proxy - Fatal编程技术网

Api Node.js代理,能够更改响应头并注入额外的请求数据

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

我正在编写一个node.js代理服务器,为不同域上的API提供请求

我想用,我已经找到了

但是有没有一种方法可以根据条件(即添加API密钥)修改请求数据,并考虑到可能存在不同的方法请求-
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的代理请求