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由快速框架使用的那样