// only a single field is set
res.setHeader('content-type', 'application/json');
// multiple fields can be set at once
res.set({
'content-type': 'application/json',
'content-length': '100',
'warning': "with content type charset encoding will be added by default"
});
res.set =
res.header = function header(field, val) {
if (arguments.length === 2) {
var value = Array.isArray(val)
? val.map(String)
: String(val);
// add charset to content-type
if (field.toLowerCase() === 'content-type') {
if (Array.isArray(value)) {
throw new TypeError('Content-Type cannot be set to an Array');
}
if (!charsetRegExp.test(value)) {
var charset = mime.charsets.lookup(value.split(';')[0]);
if (charset) value += '; charset=' + charset.toLowerCase();
}
}
this.setHeader(field, value);
} else {
for (var key in field) {
this.set(key, field[key]);
}
}
return this;
};
4条答案
按热度按时间voase2hg1#
res.setHeader()
是Node.js的本机方法,res.header()
是Express框架中res.set()
方法的别名。文件:x1米3英寸1x,x1米4英寸1x
这两个方法做的是完全相同的事情,设置HTTP响应的头。唯一的区别是
res.setHeader()
只允许你设置一个单一的头和res.header()
将允许你设置多个头。所以使用适合你需要的一个。mzmfm0qo2#
也许一个例子可以澄清更多:
dgtucam13#
除了高投票的答案,
set
是别名header
,它调用setHeader
来设置一个标题。另请参阅GitHub
w1jd8yoj4#
我将这段代码用于我的mean stack项目。