BIB*_*NJU 107
res.send()将发送HTTP响应.它的语法是,
res.send([body])
Run Code Online (Sandbox Code Playgroud)
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' });
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅此
res.end()将结束响应过程.这种方法实际上来自Node核心,特别是response.end()方法http.ServerResponse.它用于在没有任何数据的情况下快速结束响应.例如:
res.end();
res.status(404).end();
Run Code Online (Sandbox Code Playgroud)
阅读本文以获取更多信息.
小智 74
我想作一点点强调之间的一些关键区别res.end()和res.send()相对于响应头以及为什么它们是重要的.
1. res.send()将检查输出结构并相应地设置标题信息.
app.get('/',(req,res)=>{
res.send('<b>hello</b>');
});
Run Code Online (Sandbox Code Playgroud)
app.get('/',(req,res)=>{
res.send({msg:'hello'});
});
Run Code Online (Sandbox Code Playgroud)
res.end()的位置只能用文本回复,不会设置" Content-Type "
app.get('/',(req,res)=>{
res.end('<b>hello</b>');
});
Run Code Online (Sandbox Code Playgroud)
2. res.send()将在响应头中设置"ETag"属性
app.get('/',(req,res)=>{
res.send('<b>hello</b>');
});
Run Code Online (Sandbox Code Playgroud)
¿为什么这个标签很重要?
ETag HTTP响应头是特定版本资源的标识符.它允许缓存更高效,并节省带宽,因为如果内容未更改,Web服务器不需要发送完整响应.
res.end() 不会设置此标头属性
Aal*_*der 11
除了出色的答案之外,我想在这里强调一下,何时使用res.end()以及何时使用res.send()这就是我最初登陆这里但没有找到解决方案的原因。
答案很简单。
res.end()用于快速结束响应而不发送任何数据。
一个例子是在服务器上启动一个进程:
app.get('/start-service', (req, res) => {
// Some logic here
exec('./application'); // dummy code
res.end();
});
Run Code Online (Sandbox Code Playgroud)
如果您想在响应中发送数据,那么您应该使用res.send()代替:
app.get('/start-service', (req, res) => {
res.send('{"age":22}');
});
Run Code Online (Sandbox Code Playgroud)
在这里您可以阅读更多内容:
res.send()用于将响应发送到客户端,res.end()用于结束您正在发送的响应。
res.send()自动调用res.end()所以您不必在之后调用或提及它res.send()
res.send()的作用是实现res.write,res.setHeaders和res.end。
它会检查您发送的数据并设置正确的标头,
然后,它使用res.write传输数据,最后使用res.end设置请求的结尾。
在某些情况下,您可能希望手动执行此操作,例如,如果您想流文件或大型数据集,在这种情况下,您将需要自己设置标题并使用res.write来保持流流。
| 归档时间: |
|
| 查看次数: |
75192 次 |
| 最近记录: |