Tambahkan header di semua permintaan http keluar menggunakan modul permintaan ExpressJS, apakah mungkin?

Saya menggunakan modul request untuk NodeJS.

Saya bertanya-tanya, Daripada menambahkan header di setiap permintaan dengan tangan seperti dokumen.

ex.

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

request(options ,callback);

Apakah mungkin dengan middleware atau sesuatu untuk memasukkan header ke SEMUA permintaan?

Saya mencoba dengan membuat middleware ini:

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

Ia bekerja pada semua permintaan http kecuali yang dibuat dengan modul request.

CATATAN: Yang saya maksud adalah semua permintaan keluar saya, bukan yang masuk.


person Vassilis Pits    schedule 31.05.2016    source sumber


Jawaban (1)


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

request.defaults(options) Metode ini mengembalikan pembungkus API permintaan normal yang defaultnya adalah opsi apa pun yang Anda berikan padanya.

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

Anda dapat menggabungkan modul permintaan di dalam modul Anda sendiri untuk mencegah mendefinisikan ulang header setiap saat, misalnya, membuat myRequest.js

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

[EDIT] Contoh kerja:

Permintaanku.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);
  }
});

Berjalan index.js:

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

Saya telah memasukkan contohnya ke https://github.com/agoldis/stackoverflow_37549654

person agoldis    schedule 31.05.2016
comment
@VassilisPits seharusnya berfungsi, lihat jawaban yang diedit :) - person agoldis; 01.06.2016
comment
Anda mengatur header saat menjalankan aplikasi? - person Vassilis Pits; 01.06.2016
comment
@VassilisPits Header disetel di myRequest.js - setiap penggunaan myRequest akan menyetel header sesuai dengan itu. Bukankah itu yang kamu minta? - person agoldis; 01.06.2016
comment
Ya dan terima kasih atas dukungannya, meskipun masih tidak berhasil. Saya akan mencari tahu dan kembali. Namun beri suara positif - person Vassilis Pits; 01.06.2016