我是Express.js的初学者,我对这两个关键字感到困惑:res.end()和res.send()。
Express.js
res.end()
res.send()
它们是相同的还是不同的?
首先,res.send()和res.end()是不同的。
res.send()将发送HTTP响应。它的语法是,
res.send([body])
body参数可以是Buffer对象、String、object或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核心,特别是http.ServerResponse的response.end()方法。它用于在没有任何数据的情况下快速结束响应。例如:
http.ServerResponse
response.end()
res.end(); res.status(404).end();
更多信息请阅读这。
首先,res.send()和res.end()是相同的不。
我想稍微强调一下res.end()和amp;res.send()关于响应头和为什么他们是重要的。
app.get('/',(req,res)=>{ res.send('<b>hello</b>'); });
app.get('/',(req,res)=>{ res.send({msg:'hello'}); });
在res.end()中,你只能用文本进行响应,它不会设置"内容类型"
app.get('/',(req,res)=>{ res.end('<b>hello</b>'); });
<强> 2。res.send()将设置“;ETag"属性
res.end()不会设置这个头属性
res.send()实现了res.write, res.setHeaders和res.end:
res.write
res.setHeaders
res.end
在某些情况下,您可能需要手动执行此操作,例如,如果您想传输文件或大型数据集。在这些情况下,你需要自己设置头文件,并使用res.write来保持流的流动。
res是一个HttpResponse对象,它扩展自OutgoingMessage。res.send调用由OutgoingMessage实现的res.end来发送HTTP响应并关闭连接。我们看到代码在这里
res
res.send
res.send()用于向客户端发送响应,而res.end()用于结束正在发送的响应。
所以你不必在res.send()之后调用或提到它
除了优秀的答案,我想在这里强调,什么时候使用res.end (),什么时候使用res.send (),这就是为什么我最初降落在这里,我没有找到一个解决方案。
答案很简单。
res.end ()用于快速结束响应而不发送任何数据。
一个例子是在服务器上启动一个进程:
app.get(/start-service, (req, res) => { // Some logic here exec('./application'); // dummy code res.end(); });
如果你想在你的响应中发送数据,那么你应该使用res.send ()代替:
app.get(/start-service, (req, res) => { res.send('{"age":22}'); });
你可以在这里阅读更多:
res.end ()函数用于结束响应过程。 res.send()函数是res.write(), res.setHeaders()和res.end()的组合。
res.write()
res.setHeaders()