Fastify 是一个快速、低开销且可扩展的 Node.js Web 框架,结合 Node.js 的异步能力,可以帮助开发者更加高效地构建 Web 应用程序。本文将详细介绍 Fastify 的使用方法,包括路由、插件、数据验证等方面,并提供示例代码以供参考。
安装
使用 NPM 安装 Fastify:
npm install fastify
简单示例
以下是一个简单的 Fastify 应用程序示例:
-- -------------------- ---- ------- ----- ------- - -------------------- ---------------- ----- --------- ------ -- - ------ - ------ ------- - -- -------------------- ----- -------- -- - -- ----- ----- --- ------------------- --------- -- ------------ --
启动应用程序后,访问 http://localhost:3000/
应该可以看到返回值为 { hello: 'world' }
的 JSON 数据。
路由
Fastify 的路由系统基于路径和 HTTP 方法。例如,下面的示例将处理 GET 请求 http://localhost:3000/hello
:
fastify.get('/hello', async (request, reply) => { return { message: 'Hello World' } })
路由可以使用参数,例如:
fastify.get('/user/:id', async (request, reply) => { const { id } = request.params // 根据 id 查询用户 const user = await getUserById(id) return { user } })
Fastify 还支持正则表达式路由,例如:
fastify.get(/^\/user\/([0-9]+)\/friends$/, async (request, reply) => { const { params } = request const { 0: id } = params // 根据 id 查询用户朋友 const friends = await getUserFriends(id) return { friends } })
插件
Fastify 使用插件系统实现了高度的可扩展性。插件可以用来添加新功能,以及修改现有功能的行为。
使用 fastify-plugin
模块,可以轻松地创建和使用插件。例如:
-- -------------------- ---- ------- ----- ------- - -------------------- ----- -- - ------------------------- -- ------ ----- -------- - -------- --------- -------- -- - -- ---------------- ---------------------- ----- --------- ------ -- - ------ - ------- ------- - -- -- -- ---- -------------------------- -------------------- ----- -------- -- - -- ----- ----- --- ------------------- --------- -- ------------ --
上述示例中,创建了一个名为 myPlugin
的插件,并注册到 Fastify 应用程序中。在插件中添加了一个新路由,当访问 http://localhost:3000/plugin
时会返回 { plugin: 'works' }
的 JSON 数据。
数据验证
与其他 Node.js Web 框架一样,Fastify 允许使用数据验证功能来验证路由处理程序的输入和输出。
以下是一个使用 JSON Schema 数据验证的示例:
-- -------------------- ---- ------- --------------------- - ------- - ----- - ----- --------- ----------- - ----- - ----- -------- -- ---- - ----- ---------- -------- -- -- ------ - ----- --------- ------- ------- -- -- --------- -------- ------ --------- -- -- -------- ----- --------- ------ -- - ----- - ---- - - ------- -- ------- ----- ------- - ----- ------------------- ------ - ------- - -- --
上述示例中使用了 schema
选项对请求体进行数据验证。当请求体不符合 JSON Schema 模式时,Fastify 会自动发送带有适当错误状态代码和错误消息的响应。
结论
Fastify 是一个快速、灵活、可扩展的 Node.js Web 框架,通过本文的介绍,我们可以学习到 Fastify 的常见用法,包括路由、插件、数据验证等。这些功能可以帮助开发者更加高效地构建 Web 应用程序。
示例代码:https://github.com/lhzhang/fastify-example
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f7b445c5c563ced5a63315