2016-05-31 37 views
0

我正在为NodeJS使用request模块。使用ExpressJS的请求模块在所有传出的http请求中添加头文件,有可能吗?

我想知道, 而是通过手的每个请求,如文档添加页眉的。

ex。

var options = { 
    url: myuRL, 
    headers: { 
    'myHeader': 'headerVal' 
    } 
} 

request(options ,callback); 

是否有可能与中间件或东西在所有请求注入头?

我试图通过创建这个中间件:

const addHeaders = function (req, res, next) { 
    req.header('myHeader', 'MyVal'); 
    next(); 
}; 
module.exports = addHeaders; 

它适用于除了那些具有request模块创建的所有HTTP请求。

注:我的意思是所有我传出请求不进来。

回答

1

https://www.npmjs.com/package/request#convenience-methods

request.defaults(options) 这个方法返回围绕默认为任何选项,你传递给它的正常请求API的包装。

//requests using baseRequest() will set the 'x-token' header 
var baseRequest = request.defaults({ 
    headers: {'x-token': 'my-token'} 
}) 

你可以用请求模块自己的模块内,以防止每一次重新定义了头,例如,创建myRequest.js

var request = require('request'); 
var myRequest = request.defaults({ 
    headers: {'x-token': 'my-token'} 
}) 
module.exports = exports = myRequest; 

[编辑]工作例如:

myRequest。 js

const request = require('request'); 
const myRequest = request.defaults({ 
    headers: {'x-token': 'my-token'} 
}); 
module.exports = exports = myRequest; 

index.js

const myRequest = require('./myRequest.js'); 
const options = { 
    url: 'https://google.com' 
}; 
myRequest(options, (err, res, body) => { 
    if (err) { 
    console.error(err); 
    } 
    else { 
    console.log(res.req._headers); 
    } 
}); 

运行index.js

$ node ./index.js 
{ 'x-token': 'my-token', 
referer: 'https://google.com/', 
host: 'www.google.com' } 

我推例子https://github.com/agoldis/stackoverflow_37549654

+0

THX @agoldis仍尽管它不工作:/ –

+0

@ VassilisPits应该工作,看看编辑的答案:) – agoldis

+0

当你运行应用程序时,你设置了标题? –