前言
在应用 Node.js
的服务端代码中,如果应用的是 Express 框架,那么对于一个申请,经常会有两种响应形式:
// 办法 1
app.get("/end", (req, res, next) =>{res.end(xxx);
});
// 办法 2
app.get("/send", (req, res, next) =>{res.send(xxx);
});
那么这两种形式到底有何区别?各自的利用场景别离是什么?这是我明天须要讲清楚的。
Express 之 res.end()
定义
它能够在不须要任何数据的状况下疾速完结响应。
这个办法实际上来自 Node 外围,具体来说是 http.ServerResponse.Use
的 response.end()
办法:
语法
res.end([data[, encoding]][, callback])
参数解析:
- data <string> | <Buffer>
- encoding <string>
- callback <Function>
深刻
如果给 res.end()
办法传入一个对象,会产生报错:
Express 之 res.send()
定义
向申请客户端发送 HTTP 响应音讯。
语法
res.send([body[,statusCode]])
body 参数能够是 Buffer、Object、String、Boolean 或 Array。
深刻
通过代码调试,咱们能够发现,Express 的 res.send()
办法最终调用的也是 http.ServerResponse.Use
的 response.end()
办法:
// node_modules/express/lib/response.js
res.send = function send(body) {
var chunk = body;
var encoding;
……
if (req.method === 'HEAD') {
// skip body for HEAD
this.end();} else {
// respond
this.end(chunk, encoding);
}
return this;
};
比照
相同点
Express 的 res.end() 和 res.send() 办法的相同点:
- 二者最终都是回归到
http.ServerResponse.Use
的response.end()
办法。 - 二者都会完结以后响应流程。
不同点
Express 的 res.end() 和 res.send() 办法的不同点:
- 前者只能发送 string 或者 Buffer 类型,后者能够发送任何类型数据。
- 从语义来看,前者更适宜没有任何响应数据的场景,而后者更适宜于存在响应数据的场景。
总结
Express 的 res.end() 和 res.send() 办法应用上,个别倡议应用 res.send()
办法即可,这样就不须要关怀响应数据的格局,因为 Express 外部对数据进行了解决。
~
~ 本文完,感激浏览!
~
学习乏味的常识,结识乏味的敌人,塑造乏味的灵魂!
大家好,我是〖编程三昧〗的作者 隐逸王 ,我的公众号是『编程三昧』,欢送关注,心愿大家多多指教!
你来,怀揣冀望,我有墨香相迎!你归,无论得失,唯以余韵相赠!
常识与技能并重,内力和外功兼修,实践和实际两手都要抓、两手都要硬!