Home > Software engineering >  Express, how to set custom request headers on all routes for all requests?
Express, how to set custom request headers on all routes for all requests?

Time:06-01

I have this node API wrapper service, where I need to set REQUEST custom headers on all routes / endpoints at once instead of doing that on each request. I have tried the following in app.js but receive a not function error: req.set is not a function.

const customHeadersAppLevel = function (req, res, next) {
  req.set("User-Agent", "zendx/sop API");
  next();
};
app.all("*", customHeadersAppLevel);

Is there anyway we can do this on the app level or should I just go ahead with setting custom request headers on individual routes/requests, respectively.

CodePudding user response:

Assuming that app = express() and we are at the top of the server's root file, you could set those headers for all your request like this:

const customHeadersAppLevel = function (req, res, next) {
  req.headers['User-Agent'] = 'zendx/sop API'
  next();
};

app.use(customHeadersAppLevel);

CodePudding user response:

I think there is no set function in Request. Use headers property to set the request header.

 const customHeadersAppLevel = function (req, res, next) {
    req.headers['User-Agent'] = 'zendx/sop API';
    next();
 };
 app.all('*', customHeadersAppLevel);

You can also use Application-level middleware. Something like this,

const express = require('express')
const app = express()

app.use((req, res, next) => {
  req.headers['User-Agent'] = 'zendx/sop API';
  next()
})

// Other Route comes here
  • Related