web-dev-qa-db-ja.com

node.js(express)でコンテンツタイプをグローバルに設定する方法

私は間違っているかもしれませんが、どのドキュメントでもこれを見つけることができませんでした。応答に対してコンテンツタイプをグローバルに設定しようとしていますが、次のようになりました。

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

ルートを定義する前に。

 // 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);

何らかの理由でこれは機能しません。私が間違っていることを知っていますか?各メソッドで個別に設定すると機能しますが、グローバルに設定したい...

12
Cristian Boariu

Express 4.0の場合は this を試してください:

// this middleware will be executed for every request to the app
app.use(function (req, res, next) {
  res.header("Content-Type",'application/json');
  next();
});
18
A.B

問題が見つかりました:この設定は次の前に行う必要があります:

app.use(app.router)

したがって、最終的なコードは次のとおりです。

// 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)
3
Cristian Boariu