เพิ่มส่วนหัวในคำขอ 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) เมธอดนี้ส่งคืน wrapper รอบ 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