短篇小说:
我希望使用中间件将带有Express的自定义值添加到每个http响应中。我不希望它在我体内。怎么做?
老故事:
特定值是一个名为apiVersion
的字符串。
我写了这个中间件:
function apiVersionMiddleware(req, res, next) {
res.apiVersion = "1.1";
next();
}
我在后端的响应对象中看到apiVersion
字段。但是,我在http响应中看不到它。
阅读一些明确的文档后,我发现:https://expressjs.com/en/api.html#res.append。但是在http标头中添加自定义响应是一种好习惯吗?应该在这里还是在另一个变量中?
答案 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"]
})
);