我正在使用NodeJS的request
模块。
我在想, 而不是像文档一样手动添加每个请求中的标题。
离。
var options = {
url: myuRL,
headers: {
'myHeader': 'headerVal'
}
}
request(options ,callback);
是否可以使用中间件或其他东西在所有请求中注入标头?
我试过创建这个中间件:
const addHeaders = function (req, res, next) {
req.header('myHeader', 'MyVal');
next();
};
module.exports = addHeaders;
它适用于所有http请求,但使用request
模块创建的请求除外。
注意:我的意思是对所有人传出请求不要传入。
答案 0 :(得分: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' }