Fastify 应用程序中的分组路由详解

Fastify 是一个快速、低开销的 Web 框架,它支持异步并发请求处理。在 Fastify 中,您可以使用路由将 URL 匹配到处理程序。而分组路由是一种组织路由的有效方式,使得应用程序更加模块化和易于维护。

什么是分组路由

在 Fastify 中,分组路由是一个使用 .register 函数创建的路由组件。它们可以让您将多个路由关联在一起,并添加中间件来对它们进行更好的处理。

举个例子,假设您有一个类似于博客的应用程序,您需要分别设置文章和评论的路由,以及各自的处理程序。您可以使用分组路由来组织代码,如下所示:

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

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

这样,您就可以将 articles.js 的内容定义为:

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

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

以及 comments.js

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

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

这将使代码更加模块化,并更好地组织路由。

分组路由的依赖注入

Fastify 还支持基于依赖注入的分组路由。这使得在 Fastify 应用程序中共享代码或服务成为可能。您可以在分组路由的注册选项中添加一个 prefix,来实现路由的前缀匹配。

举个例子,下面代码中使用分组路由来定义 /api 的路由,并将 service 服务传递给所有的路由处理程序和中间件。

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

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

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

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

在上面的例子中,我们将 someSharedService 服务注册到了全局的 fastify 实例中,确保它能被所有子路由访问到。而这个服务在所有路由处理程序和中间件中可供使用。

分组路由的嵌套

在 Fastify 中,您可以嵌套分组路由,以便更好地组织代码。下面是一个嵌套路由的例子:

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

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

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

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

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

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

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

在上面的代码中,我们注册了 /auth 的路由,并将一个 preHandler 的钩子添加到了全局。然后,我们注册了嵌套路由 /user/userProfile。我们还添加了一个 preHandler 钩子,检查用户是否有有效的授权令牌。最后,我们注册了 /admin 的路由,并在注册选项中添加了一个 roles 属性。这将确保只有管理员用户可以访问此路由。

结论

Fastify 的分组路由是一种有效的方法,可以改善组织和维护路由。您可以使用自己的中间件,路由处理程序和上下文对象来自由地定义和管理您的路由。快试试吧!

完整示例代码:fastify-grouped-routes

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6709090dd91dce0dc875f35d