用以封裝,處理http請求的細節,讓我們去處理業務邏輯而不是底層的一些繁瑣細節
例如下面的**:
var router =
require
('./router'
)var express =
require
('express'
)var bodyparser =
require
('body-parser'
)express()
var fs =
require
('fs'
)use
('/node_modules/'
, express.
static
('./node_modules/'))
use(
'/public/'
, express.
static
('./public/'))
engine
('html'
,require
('express-art-template'))
use(bodyparser.
urlencoded()
)use
(bodyparser.
json()
)use
(router)
listen
(3000
,function()
)
其中的use
,engine
就是內建的一些中介軟體,它對傳入的目錄/檔案/等等,進行處理並返回方法
中介軟體的分類:
應用程式級別中介軟體:
var express =
require
('express'
)express()
// 中介軟體:處理請求,本質就是個處理函式
// 在express中對中介軟體有很多分類
// 不關心請求路徑和請求方法的中介軟體
// 也就是說任何請求都會進入這個中介軟體
// 中介軟體本身是乙個方法,該方法接受三個引數
// request請求物件
// response響應物件
// next下乙個中介軟體
// 這裡如果中介軟體中沒有next(),那麼是不會進入下乙個中介軟體
console.log('1')
next()
}) console.log('2')
next()
}) */
console.log('first next')
next()
})*/
// 關心請求路徑的中介軟體:
// 所有以/a開頭的,都會請求過來
// 但是此時在下面得的中介軟體中輸出req.url時,它是不包含/a的,處理時會自動去除
// console.log('is running at port 3000');
console.log(req.url);
res.send('/a路徑請求')
}) console.log('second next 第二次,沒有匹配的')
next()
}) */
// 以/b開頭的會進來
// console.log('is running at port 3000');
console.log(req.url);
res.send('/b路徑請求')
}) */
// 上面的是應用程式級別的中介軟體
listen
(3000
,function()
)
其中有幾種匹配方式:
// 萬能匹配的模式
use(
function
(req, res, next))
// 匹配開頭的:
// 只有以 /a 開頭的才會進來:
use(
'/a'
,function
(req, res
))
要注意其中傳入的引數:next
乙個中介軟體中傳入了next
引數,並且在其中呼叫了next()
那麼在執行完該中介軟體之後,會呼叫下乙個匹配
的中介軟體:
use(
function
(req, res, next))
use(
'/a'
,function
(req, res))
use(
function
(req, res, next))
在上面中,第乙個中介軟體被呼叫之後:
路由器級別中介軟體
// 除了上面的中介軟體之外,還有一種最常用的
// 嚴格匹配請求方法和請求路徑的中介軟體:
// 下面的是路由器級別的中介軟體
get(
'/',
function
(req, res, next))
get(
'/a'
,function
(req, res, next
))
上面這些中介軟體是只有以指定字串開頭的才會進入該中介軟體
中介軟體使用
express是乙個自身功能極簡,完全是路由和中介軟體構成乙個web開發框架 乙個express應用就是在呼叫各種中介軟體。中介軟體在express開發中很重要 中介軟體函式能夠訪問請求物件 req 響應物件 res 以及應用程式的請求 響應迴圈中的下乙個中介軟體函式 該next功能是中介軟體函式中...
Django中介軟體的使用?
django在中介軟體中預置了六個方法,這六個方法的區別在於不同的階段執行,對輸入或輸出進行干預,方法如下 1.初始化 無需任何引數,伺服器響應第乙個請求的時候呼叫一次,用於確定是否啟用當前中介軟體 def init pass 2.處理請求前 在每個請求上呼叫,返回none或httpresponse...
Django 中介軟體的使用
初始化 無需任何引數,伺服器響應第乙個請求的時候呼叫一次,用於確定是否啟用當前中介軟體 def init pass處理請求前 在每個請求上呼叫,返回 none 或 httpresponse 物件 def process request request pass處理檢視前 在每個請求上呼叫,返回 no...