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

在使用Node.js
# 的服務端程式碼中,如果使用的是Express 框架,那麼對於一個請求,常常會有兩種回應方式:
1 2 3 4 5 6 7 8 | app.get( "/end" , (req, res, next) =>{
res. end (xxx);
});
app.get( "/send" , (req, res, next) =>{
res.send(xxx);
});
|
登入後複製
那麼這兩種方式究竟有何不同?各自的應用場景分別是什麼?這是我今天需要講清楚的。
Express 之res.end()
定義
#它可以在不需要任何資料的情況下快速結束響應。
這個方法其實是來自Node 核心,具體來說是http.ServerResponse.Use
的response.end()
方法:

#語法
1 | res. end ([data[, encoding]][, callback])
|
登入後複製
參數解析:
 和 res.end())
##如果給
res.end()
方法傳入一個對象,會發生報錯:
Express 之res.send()
定義
向請求客戶端發送HTTP 回應訊息。
語法
1 | res.send([body[,statusCode]])
|
登入後複製
body 參數可以是 Buffer、Object、String、Boolean 或 Array。
深入
透過程式碼調試,我們可以發現,Express 的
res.send()
方法最終調用的也是
http.ServerResponse.Use- 的
response.end() 方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | res.send = function send(body) {
var chunk = body;
var encoding;
……
if (req.method === 'HEAD') {
this. end ();
} else {
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 內部已經處理了資料。 ######~本文完,感謝閱讀! ######更多node相關知識,請造訪:###nodejs 教學###! ! ###以上是淺析node Express框架中的 res.send() 和 res.end()的詳細內容。更多資訊請關注PHP中文網其他相關文章!