Express.js 是 Node.js 服务器端框架中最受欢迎的一个,它提供了很多方便的功能,其中路由配置和中间件的使用是其中最核心的部分之一。本文将围绕这两个方向,详细讲解 Express.js 中路由配置和中间件的使用。
什么是路由
路由是指如何定义应用的端点 (URI) 以及如何响应客户端的请求,通常由一个 URI、HTTP 请求方法、一个处理函数构成。应用根据客户端访问的地址(URI)和请求方式(HTTP 请求方法)来匹配特定的路由,并执行相应的处理函数。
Express.js 中的路由有两种:基本路由和参数路由。
基本路由
基本路由由 HTTP 动词和 URL 模式组合而成,如:
app.METHOD(PATH, HANDLER)
其中,app
是 Express 实例化的对象;METHOD
是一个 HTTP 请求方式,例如 GET
、PUT
、POST
等;PATH
是 URL 的路径;HANDLER
是在路由匹配成功时执行的函数。
例如:
app.get('/', function(req, res) { res.send('Hello World!'); });
这里定义了 GET
方式的 /
路由,当浏览器访问该路由时,会返回 Hello World!
。
参数路由
参数路由依赖于 URL 中的参数(这些参数必须在 URL 中限定)。你可以使用冒号后跟参数名来定义参数路由,如:
app.get('/p/:id', function(req, res) { res.send(`The id you specified is ${req.params.id}`); });
这里定义了 GET
方式的 /p/:id
路由,其中冒号后面的 id
表示参数的名称。当客户端请求 /p/123
路由时,会返回 The id you specified is 123
。
什么是中间件
中间件是处理 HTTP 请求的函数,它可以访问请求对象 (req
)、响应对象 (res
) 和应用程序的请求-响应循环中的下一个中间件函数。 如果当前中间件函数没有将响应发送到客户端,则必须调用 next()
将控件传递给下一个中间件函数,否则请求将挂起。
在 Express.js 中,中间件可以是应用级别(绑定到 app
对象)或路由级别(绑定到特定 app.METHOD()
的路由)。
应用级别中间件
应用级别中间件使用 app.use()
函数来定义,可以用于增加全局的路由处理逻辑。例如,为应用程序添加路由日志:
app.use(function(req, res, next) { console.log(`Time: ${Date.now()} Request: ${req.method} ${req.url}`); next(); });
路由级别中间件
路由级别中间件也使用 app.use()
函数来定义,但是需要绑定到特定的路由。例如,为特定路由添加身份验证:
app.use('/admin', function(req, res, next) { if (!req.headers.authorization) { res.status(401).send('Unauthorized'); } else { next(); } });
这里定义了 /admin
路由上的身份验证中间件,如果请求头没有 Authorization
属性,则会以 401 响应返回 Unauthorized
,否则请求将转移到下一个中间件或路由处理程序。
示例代码
下面的代码展示了如何在 Express.js 中定义和使用路由和中间件:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ---------- -- ---------------- --------------------- ---- ----- - ------------------ ------------- -------- ------------- ------------- ------- --- -- -------------- ----------------- ------------- ---- ----- - -- ---------------------------- - ------------------------------------- - ---- - ------- - --- -- ------------ ------------ ------------- ---- - --------------- --------- --- -- ------------- -- ----- ------------------------ ------------- ---- - ----------------- --- ------------------- --- ---------------- ---------- - ------------------- --------- -- ---- ------- ---展开代码
本文介绍了 Express.js 中路由配置和中间件的使用,希望对大家有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67bce9cfa231b2b7eded5388