前言
在应用 Node.js
的服务端代码中,如果应用的是 Express 框架,那么对于一个申请,经常会有两种响应形式:
// 办法1app.get("/end", (req, res, next) =>{ res.end(xxx);});// 办法2app.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.jsres.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 外部对数据进行了解决。
~
~本文完,感激浏览!
~
学习乏味的常识,结识乏味的敌人,塑造乏味的灵魂!
大家好,我是〖编程三昧〗的作者 隐逸王,我的公众号是『编程三昧』,欢送关注,心愿大家多多指教!
你来,怀揣冀望,我有墨香相迎! 你归,无论得失,唯以余韵相赠!
常识与技能并重,内力和外功兼修,实践和实际两手都要抓、两手都要硬!