Answers:
res.send()
将发送HTTP响应。它的语法是
res.send([body])
主体参数可以是Buffer对象,String,对象或Array。例如:
res.send(new Buffer('whoop'));
res.send({ some: 'json' });
res.send('<p>some html</p>');
res.status(404).send('Sorry, we cannot find that!');
res.status(500).send({ error: 'something blew up' });
请参阅此以获取更多信息。
res.end()
将结束响应过程。该方法实际上来自Node核心,特别是的response.end()
方法http.ServerResponse
。它用于快速结束没有任何数据的响应。例如:
res.end();
res.status(404).end();
阅读此以获得更多信息。
express
而是出于标题的考虑而投票支持-一个发送东西,一个结束东西...。
res.send()
。这像res.end()
吗?
我想更加强调res.end()
&res.send()
在响应标头之间的一些关键区别以及它们为什么很重要。
1. res.send()将检查输出的结构并相应地设置标头信息。
app.get('/',(req,res)=>{
res.send('<b>hello</b>');
});
app.get('/',(req,res)=>{
res.send({msg:'hello'});
});
在使用res.end()的地方,您只能使用文本进行响应,而不会设置“ Content-Type ”
app.get('/',(req,res)=>{
res.end('<b>hello</b>');
});
2. res.send()将在响应头中设置“ ETag”属性
app.get('/',(req,res)=>{
res.send('<b>hello</b>');
});
¿为什么这个标签很重要?
ETag HTTP响应标头是资源特定版本的标识符。它可以使缓存更高效,并节省带宽,因为如果内容未更改,Web服务器不需要发送完整的响应。
res.end()
不会设置此标头属性
res.end
由普通节点使用的,就像res.send
由快速框架使用的那样