Express.js 中的路由和控制器详解

阅读时长 5 分钟读完

Express.js 是一款流行的 Node.js Web 框架,它提供了许多有用的功能,其中路由和控制器是构建 Web 应用程序的重要组成部分。本文将深入探讨 Express.js 中的路由和控制器,介绍它们的工作原理、如何使用以及最佳实践。

路由

路由是 Web 应用程序中的一个概念,它用于将请求映射到处理程序。在 Express.js 中,路由是通过 HTTP 方法(例如 GET、POST、PUT、DELETE 等)和 URL 路径定义的。路由定义的基本语法如下:

其中,app 是一个 Express.js 应用程序实例,METHOD 是 HTTP 方法,PATH 是 URL 路径,HANDLER 是处理请求的函数。

以下是一个简单的 Express.js 应用程序,其中定义了一个 GET 路由:

-- -------------------- ---- -------
----- ------- - ------------------
----- --- - ---------

------------ ----- ---- -- -
  ---------------- --------
--

---------------- -- -- -
  ------------------- -- ------- -- ---- ------
--

在上面的代码中,app.get 方法定义了一个 GET 路由,它将请求映射到一个处理函数。当用户访问应用程序的根路径时,该处理函数将返回一个简单的文本消息。

路径参数

Express.js 中的路由路径可以包含参数。这些参数可以作为请求对象的属性访问。例如:

在上面的代码中,: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

纠错
反馈