1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 认识 Express 的 res.send() 和 res.end()

认识 Express 的 res.send() 和 res.end()

时间:2020-10-01 10:33:22

相关推荐

认识 Express 的 res.send() 和 res.end()

前言

在使用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.Useresponse.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.Useresponse.end()方法:

// node_modules/express/lib/response.jsres.send = function send(body) {var chunk = body;var encoding;……if (req.method === 'HEAD') {// skip body for HEADthis.end();} else {// respondthis.end(chunk, encoding);}return this;};

对比

相同点

Express 的 res.end() 和 res.send() 方法的相同点:

二者最终都是回归到http.ServerResponse.Useresponse.end()方法。二者都会结束当前响应流程。

不同点

Express 的 res.end() 和 res.send() 方法的不同点:

前者只能发送 string 或者 Buffer 类型,后者可以发送任何类型数据。从语义来看,前者更适合没有任何响应数据的场景,而后者更适合于存在响应数据的场景。

总结

Express 的 res.end() 和 res.send() 方法使用上,一般建议使用res.send()方法即可,这样就不需要关心响应数据的格式,因为 Express 内部对数据进行了处理。

~

~本文完,感谢阅读!

~

学习有趣的知识,结识有趣的朋友,塑造有趣的灵魂!

大家好,我是〖编程三昧〗的作者隐逸王,我的公众号是『编程三昧』,欢迎关注,希望大家多多指教!

你来,怀揣期望,我有墨香相迎! 你归,无论得失,唯以余韵相赠!

知识与技能并重,内力和外功兼修,理论和实践两手都要抓、两手都要硬!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。