使用Express的http响应中的自定义值(不在正文中)

时间:2019-04-15 13:10:32

标签: node.js http express

短篇小说:

我希望使用中间件将带有Express的自定义值添加到每个http响应中。我不希望它在我体内。怎么做?


老故事:

特定值是一个名为apiVersion的字符串。

我写了这个中间件:

function apiVersionMiddleware(req, res, next) {
  res.apiVersion = "1.1";
  next();
}

我在后端的响应对象中看到apiVersion字段。但是,我在http响应中看不到它。

阅读一些明确的文档后,我发现:https://expressjs.com/en/api.html#res.append。但是在http标头中添加自定义响应是一种好习惯吗?应该在这里还是在另一个变量中?

1 个答案:

答案 0 :(得分:1)

意识到我的问题更多是关于http标头的使用。

在文档response header中找到了此内容。在标题页上,可以找到响应标题的以下定义:

  

Response标头:标头,其中包含有关响应的其他信息,例如其位置或服务器本身(名称和版本等)。

因此非常适合我的用例。

这使我在快速文档中找到了这个解决方案:https://expressjs.com/en/api.html#res.set

function apiVersionMiddleware(req, res, next) {
  res.set("api-version", "1.1");
  next();
}

我还必须在cors中将自定义标头添加到我的暴露标头中:

app.use(
  cors({
    exposedHeaders: ["api-version"]
  })
);