首頁  >  文章  >  web前端  >  淺析node Express框架中的 res.send() 和 res.end()

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

青灯夜游
青灯夜游轉載
2022-01-21 18:57:022031瀏覽

這篇文章帶大家聊聊node Express框架,了解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);
});

那麼這兩種方式究竟有何不同?各自的應用場景分別是什麼?這是我今天需要講清楚的。

Express 之res.end()

定義

#它可以在不需要任何資料的情況下快速結束響應。

這個方法其實是來自Node 核心,具體來說是http.ServerResponse.Useresponse.end() 方法:

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

#語法

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

參數解析:

  • data |
  • encoding
  • callback

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

##如果給

res.end()

方法傳入一個對象,會發生報錯:

Express 之res.send()

定義

向請求客戶端發送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 類型,後者可以傳送任何類型資料。

從語意來看,前者更適合沒有任何回應資料的場景,而後者更適合存在回應資料的場景。 ############總結######Express 的res.end() 和res.send() 方法使用上,一般建議使用###res.send()###方法即可,這樣就不需要關心回應資料的格式,因為Express 內部已經處理了資料。 ######~本文完,感謝閱讀! ######更多node相關知識,請造訪:###nodejs 教學###! ! ###

以上是淺析node Express框架中的 res.send() 和 res.end()的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.cn。如有侵權,請聯絡admin@php.cn刪除