Fastify 是一个快速、低开销的 Web 框架,它支持异步并发请求处理。在 Fastify 中,您可以使用路由将 URL 匹配到处理程序。而分组路由是一种组织路由的有效方式,使得应用程序更加模块化和易于维护。
什么是分组路由
在 Fastify 中,分组路由是一个使用 .register
函数创建的路由组件。它们可以让您将多个路由关联在一起,并添加中间件来对它们进行更好的处理。
举个例子,假设您有一个类似于博客的应用程序,您需要分别设置文章和评论的路由,以及各自的处理程序。您可以使用分组路由来组织代码,如下所示:
const fastify = require('fastify')() fastify.register(require('./routes/articles')) fastify.register(require('./routes/comments'))
这样,您就可以将 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