Можно ли добавлять заголовки во все исходящие HTTP-запросы с помощью модуля запросов ExpressJS?

Я использую модуль request для NodeJS.

Мне было интересно, вместо того, чтобы добавлять заголовки в каждый запрос вручную, как в документах.

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;

Он работает со всеми http-запросами, кроме тех, которые созданы с помощью модуля request.

ПРИМЕЧАНИЕ. Я имею в виду исходящий запрос, а не входящий.


person Vassilis Pits    schedule 31.05.2016    source источник


Ответы (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.

person agoldis    schedule 31.05.2016
comment
@VassilisPits должен работать, посмотрите отредактированный ответ :) - person agoldis; 01.06.2016
comment
Вы устанавливаете заголовки при запуске приложения? - person Vassilis Pits; 01.06.2016
comment
@VassilisPits Заголовки устанавливаются в myRequest.js - каждое использование myRequest будет устанавливать заголовки соответственно. Разве это не то, о чем вы просили? - person agoldis; 01.06.2016
comment
Да и спасибо за поддержку, но до сих пор не работает. Я разберусь и вернусь. Голосовать за - person Vassilis Pits; 01.06.2016