站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

淺析node Express框架中的 res.send() 和 res.end()

本篇文章帶大家聊聊node Express框架,了解一下Express 中的 res.send() 和 res.end(),希望對(duì)大家有所幫助!

淺析node Express框架中的 res.send() 和 res.end()

在使用 Node.js 的服務(wù)端代碼中,如果使用的是 Express 框架,那么對(duì)于一個(gè)請(qǐng)求,常常會(huì)有兩種響應(yīng)方式:

// 方法1 app.get("/end", (req, res, next) =>{     res.end(xxx); }); // 方法2 app.get("/send", (req, res, next) =>{     res.send(xxx); });

那么這兩種方式究竟有何區(qū)別?各自的應(yīng)用場(chǎng)景分別是什么?這是我今天需要講清楚的。

Express 之 res.end()

定義

它可以在不需要任何數(shù)據(jù)的情況下快速結(jié)束響應(yīng)。

這個(gè)方法實(shí)際上來自 Node 核心,具體來說是 http.ServerResponse.Useresponse.end() 方法:

淺析node Express框架中的 res.send() 和 res.end()

語法

res.end([data[, encoding]][, callback])

參數(shù)解析:

  • data <string> | <Buffer>
  • encoding <string>
  • callback <Function>

深入

如果給 res.end() 方法傳入一個(gè)對(duì)象,會(huì)發(fā)生報(bào)錯(cuò):

淺析node Express框架中的 res.send() 和 res.end()

Express 之 res.send()

定義

向請(qǐng)求客戶端發(fā)送 HTTP 響應(yīng)消息。

語法

res.send([body[,statusCode]])

body 參數(shù)可以是 Buffer、Object、String、Boolean 或 Array。

深入

通過代碼調(diào)試,我們可以發(fā)現(xiàn),Express 的 res.send() 方法最終調(diào)用的也是 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; };

對(duì)比

相同點(diǎn)

Express 的 res.end() 和 res.send() 方法的相同點(diǎn):

  • 二者最終都是回歸到 http.ServerResponse.Useresponse.end() 方法。

  • 二者都會(huì)結(jié)束當(dāng)前響應(yīng)流程。

不同點(diǎn)

Express 的 res.end() 和 res.send() 方法的不同點(diǎn):

  • 前者只能發(fā)送 string 或者 Buffer 類型,后者可以發(fā)送任何類型數(shù)據(jù)。

  • 從語義來看,前者更適合沒有任何響應(yīng)數(shù)據(jù)的場(chǎng)景,而后者更適合于存在響應(yīng)數(shù)據(jù)的場(chǎng)景。

總結(jié)

Express 的 res.end() 和 res.send() 方法使用上,一般建議使用 res.send()方法即可,這樣就不需要關(guān)心響應(yīng)數(shù)據(jù)的格式,因?yàn)?Express 內(nèi)部對(duì)數(shù)據(jù)進(jìn)行了處理。

~本文完,感謝閱讀!

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
亚洲永久精品ww47| 精品国产日韩久久亚洲| 久久精品.com| 无码人妻精品一区二区蜜桃百度| 在线精品一区二区三区电影| 亚洲国产成人久久精品app| 日韩成人一区ftp在线播放| 国产精品一国产AV麻豆| 久久久亚洲精品国产| 国产美女精品一区二区三区| 久久精品无码一区二区app| 日韩一区二区三区不卡视频| 国产三级国产精品| 九九精品国产亚洲AV日韩| 无码国产精品一区二区免费式直播 | 久热综合在线亚洲精品| 惠民福利中文字幕人妻无码乱精品 | 国产无套精品一区二区| 国产精品成人精品久久久| 日产国产精品亚洲系列| 无码中文字幕日韩专区| 日韩一区二区a片免费观看| 国产在视频线精品视频| 香蕉视频国产精品| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 高清国产精品久久| 久久亚洲AV午夜福利精品一区| assbbwbbwbbwbbwbw精品| 波霸在线精品视频免费观看| 久久激情亚洲精品无码?V| 精品国产乱码久久久久久浪潮| 精品第一国产综合精品蜜芽| 九九九精品视频免费| 日韩中文字幕视频| 日韩免费高清视频| 日韩精品无码免费视频| 午夜精品久久久久9999高清| 成人国内精品久久久久影院| 精品一区二区三区视频在线观看| 青青草97国产精品免费观看| 亚洲一区精品伊人久久伊人|