Express.js 是一款流行的 Node.js Web 框架,它提供了许多有用的功能,其中路由和控制器是构建 Web 应用程序的重要组成部分。本文将深入探讨 Express.js 中的路由和控制器,介绍它们的工作原理、如何使用以及最佳实践。
路由
路由是 Web 应用程序中的一个概念,它用于将请求映射到处理程序。在 Express.js 中,路由是通过 HTTP 方法(例如 GET、POST、PUT、DELETE 等)和 URL 路径定义的。路由定义的基本语法如下:
app.METHOD(PATH, HANDLER)
其中,app
是一个 Express.js 应用程序实例,METHOD
是 HTTP 方法,PATH
是 URL 路径,HANDLER
是处理请求的函数。
以下是一个简单的 Express.js 应用程序,其中定义了一个 GET 路由:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- --- - --------- ------------ ----- ---- -- - ---------------- -------- -- ---------------- -- -- - ------------------- -- ------- -- ---- ------ --
在上面的代码中,app.get
方法定义了一个 GET 路由,它将请求映射到一个处理函数。当用户访问应用程序的根路径时,该处理函数将返回一个简单的文本消息。
路径参数
Express.js 中的路由路径可以包含参数。这些参数可以作为请求对象的属性访问。例如:
app.get('/users/:id', (req, res) => { const userId = req.params.id res.send(`User ID: ${userId}`) })
在上面的代码中,:id
表示一个路径参数,它可以是任何值。当用户访问 /users/123
时,req.params.id
的值将是 123
。
路由中间件
路由中间件是一个在路由处理程序之前执行的函数。它可以用于验证请求、解析请求体、设置响应头等操作。在 Express.js 中,路由中间件可以使用 app.use
方法定义。
以下是一个路由中间件的示例,它用于验证请求头中的身份验证令牌:
-- -------------------- ---- ------- ----- ------------ - ----- ---- ----- -- - ----- ----- - ------------------------- -- -------- - ------------------------------------ - ---- - ------ - - ----------------- ------------- ----- ---- -- - -------------- ------ --
在上面的代码中,authenticate
函数是一个路由中间件,它验证请求头中的身份验证令牌。如果令牌不存在,则返回 401 状态码和错误消息;否则,调用 next
函数继续处理请求。
控制器
控制器是一个处理请求的函数,它通常用于将路由处理程序与业务逻辑分离。在 Express.js 中,控制器可以是路由处理程序本身,也可以是单独的函数。
以下是一个使用控制器的示例,它将路由处理程序与业务逻辑分开:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- --- - --------- ----- -------- - ----- ---- -- - -- ---- ----- ----- - - - --- -- ----- ------- -- - --- -- ----- ----- -- - --- -- ----- --------- - - --------------- - ----------------- --------- ---------------- -- -- - ------------------- -- ------- -- ---- ------ --
在上面的代码中,getUsers
函数是一个控制器,它包含了业务逻辑。路由处理程序直接调用该函数,而无需包含业务逻辑。
控制器的最佳实践
以下是一些控制器的最佳实践:
- 将业务逻辑与控制器分离。
- 将控制器分组到单独的文件中。
- 使用异步函数处理请求。
- 避免在控制器中直接操作数据库,而是使用服务层。
- 处理错误并返回有意义的错误消息。
以下是一个示例控制器,它实现了上述最佳实践:
-- -------------------- ---- ------- -- -------------------- ----- ----------- - ---------------------------------- ----- -------- - ----- ----- ---- ----- -- - --- - ----- ----- - ----- ---------------------- --------------- - ----- ----- - --------- - - -------------- - - -------- -
在上面的代码中,getUsers
函数是一个控制器,它使用 userService
来获取用户列表。如果出现错误,则调用 next
函数。
结论
Express.js 中的路由和控制器是构建 Web 应用程序的重要组成部分。了解路由和控制器的工作原理、使用方法以及最佳实践将有助于构建高质量的 Web 应用程序。在实际开发中,我们应该遵循最佳实践,将业务逻辑与控制器分离,并使用异步函数处理请求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/675aab454b9d41201aba6331