乐趣区

关于javascript:认识-Express-的-ressend-和-resend

前言

在应用 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.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.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() 办法的相同点:

  1. 二者最终都是回归到 http.ServerResponse.Useresponse.end() 办法。
  2. 二者都会完结以后响应流程。

不同点

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

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

总结

Express 的 res.end() 和 res.send() 办法应用上,个别倡议应用 res.send() 办法即可,这样就不须要关怀响应数据的格局,因为 Express 外部对数据进行了解决。

~

~ 本文完,感激浏览!

~

学习乏味的常识,结识乏味的敌人,塑造乏味的灵魂!

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

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

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

退出移动版