如何在 node.js (express) 中全局设置内容类型

Posted

技术标签:

【中文标题】如何在 node.js (express) 中全局设置内容类型【英文标题】:How to set content type globally in node.js (express) 【发布时间】:2015-04-24 14:56:35 【问题描述】:

我可能错了,但我无法在任何文档中找到它。 我正在尝试为任何响应全局设置内容类型,并且这样做:

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

由于某种原因,这不起作用。你知道我做错了什么吗?分别在每种方法中设置它,可以工作,但我想要全局...

【问题讨论】:

【参考方案1】:

在 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();
);

【讨论】:

【参考方案2】:

发现问题:此设置必须放在之前:

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)

【讨论】:

错误:'app.router' 已弃用,有关如何更新应用的详细信息,请参阅 3.x 到 4.x 迁移指南。

以上是关于如何在 node.js (express) 中全局设置内容类型的主要内容,如果未能解决你的问题,请参考以下文章

node.js 之express全局安装并且启动一个微服务

配置node.js中的express框架

Node.js---中间件

Node.js 全局变量

如何在 Node.js / Express.js 中将中间件放在它自己的文件中

使用node.js的开发框架express创建一个web应用