Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set content type globally in node.js (express)

I might be wrong but I wasn't able to find this in any documentation. I am trying to set content type globally for any response and did it like:

    // Set content type GLOBALLY for any response.
  app.use(function (req, res, next) {
    res.contentType('application/json');
    next();
  });

before defining my routes.

 // Users REST methods.
  app.post('/api/v1/login', auth.willAuthenticateLocal, users.login);
  app.get('/api/v1/logout', auth.isAuthenticated, users.logout);
  app.get('/api/v1/users/:username', auth.isAuthenticated, users.get);

For some reason this doesn't work. Do you know what I am doing wrong? Setting it in each method separately, works but I want it globally...

like image 617
Cristian Boariu Avatar asked Feb 23 '15 10:02

Cristian Boariu


2 Answers

Try this for Express 4.0 :

// this middleware will be executed for every request to the app
app.use(function (req, res, next) {
  res.header("Content-Type",'application/json');
  next();
});
like image 173
A.B Avatar answered Sep 28 '22 10:09

A.B


Found the issue: this setting has to be put BEFORE:

app.use(app.router)

so the final code is:

// Set content type GLOBALLY for any response.
app.use(function (req, res, next) {
  res.contentType('application/json');
  next();
});

// routes should be at the last
app.use(app.router)
like image 45
Cristian Boariu Avatar answered Sep 28 '22 08:09

Cristian Boariu