express的新開發人員往往對路由處理程序和中間件之間的區別感到困惑。因此他們也對app.use(),app.all(),app.get(),app.post(),app.delete()和app.put()方法的區別感到困惑。
在本文中,我將解釋中間件和路由處理程序之間的區別。以及如何正確使用app.use(),app.all(),app.get(),app.post(),app.delete()和app.put()方法。
路由處理
app.use(),app.all(),app.get(),app.post(),app.delete()和app.put()全部是用來定義路由的。這些方法都用于定義路由。路由用于處理HTTP請求。路由是路徑和回調的組合,在請求的路徑匹配時執行?;卣{被稱為路由處理程序。
它們之間的區別是處理不同類型的HTTP請求。例如: app.get()方法僅僅處理get請求,而app.all()處理GET、POST等請求。
下面是一個例子,如何定義一個路由:
var app = require("express")();app.get("/", function(req, res, next){ res.send("Hello World!!!!");});app.listen(8080);每個路由處理程序都獲得對當前正在提供的HTTP請求的請求和響應對象的引用。
可以為單個HTTP請求執行多個路由處理程序。這是一個例子:
var app = require("express")();app.get("/", function(req, res, next){ res.write("Hello"); next();});app.get("/", function(req, res, next){ res.write(" World !!!"); res.end();});app.listen(8080);這里第一個句柄寫入一些響應,然后調用next()。 next()方法用于調用與路徑路徑匹配的下一個路由處理程序。
路由處理程序必須結束請求或調用下一個路由處理程序。
我們還可以將多個路由處理程序傳遞給app.all(),app.get(),app.post(),app.delete()和app.put()方法。
這是一個證明這一點的例子:
var app = require("express")();app.get("/", function(req, res, next){ res.write("Hello"); next();}, function(req, res, next){ res.write(" World !!!"); res.end();});app.listen(8080);中間件
中間件是一個位于實際請求處理程序之上的回調。它采用與路由處理程序相同的參數。
要了解中間件,我們來看一個帶有dashboard和profile頁面的示例站點。要訪問這些頁面,用戶必須登錄。還會記錄對這些頁面的請求。
以下是這些頁面的路由處理程序的代碼:
var app = require("express")();function checkLogin(){ return false;}function logRequest(){ console.log("New request");}app.get("/dashboard", function(req, res, next){ logRequest(); if(checkLogin()){ res.send("This is the dashboard page"); } else{ res.send("You are not logged in!!!"); }});app.get("/profile", function(req, res, next){ logRequest(); if(checkLogin()){ res.send("This is the dashboard page"); } else{ res.send("You are not logged in!!!"); }});app.listen(8080);
新聞熱點
疑難解答
圖片精選