您好,登錄后才能下訂單哦!
本篇內容主要講解“node Express框架中的res.send()和res.end()有什么區別”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“node Express框架中的res.send()和res.end()有什么區別”吧!
在使用 Node.js
的服務端代碼中,如果使用的是 Express 框架,那么對于一個請求,常常會有兩種響應方式:
// 方法1 app.get("/end", (req, res, next) =>{ res.end(xxx); }); // 方法2 app.get("/send", (req, res, next) =>{ res.send(xxx); });
那么這兩種方式究竟有何區別?各自的應用場景分別是什么?這是我今天需要講清楚的。
定義
它可以在不需要任何數據的情況下快速結束響應。
這個方法實際上來自 Node 核心,具體來說是 http.ServerResponse.Use
的 response.end()
方法:
語法
res.end([data[, encoding]][, callback])
參數解析:
data <string> | <Buffer>
encoding <string>
callback <Function>
深入
如果給 res.end()
方法傳入一個對象,會發生報錯:
定義
向請求客戶端發送 HTTP 響應消息。
語法
res.send([body[,statusCode]])
body 參數可以是 Buffer、Object、String、Boolean 或 Array。
深入
通過代碼調試,我們可以發現,Express 的 res.send()
方法最終調用的也是 http.ServerResponse.Use
的 response.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() 方法的相同點:
二者最終都是回歸到 http.ServerResponse.Use
的 response.end()
方法。
二者都會結束當前響應流程。
不同點
Express 的 res.end() 和 res.send() 方法的不同點:
前者只能發送 string 或者 Buffer 類型,后者可以發送任何類型數據。
從語義來看,前者更適合沒有任何響應數據的場景,而后者更適合于存在響應數據的場景。
到此,相信大家對“node Express框架中的res.send()和res.end()有什么區別”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。