Fastify 是一个快速、低开销、可扩展的 Node.js Web 框架。它的设计理念是尽可能地减少性能开销,同时提供强大的功能和可扩展性。它的简洁明了的 API,使得开发者可以快速上手,快速构建高效的 Web 应用程序。
安装
使用 npm 进行安装:
npm install fastify
安装完毕后,您可以在项目中使用以下代码引入 Fastify:
const fastify = require('fastify')()
快速入门
以下是一个简单的示例,演示了如何在 Fastify 中创建一个 HTTP 服务器,并处理根路径的 GET 请求:
-- -------------------- ---- ------- ----- ------- - -------------------- ---------------- ----- --------- ------ -- - ------ - ------ ------- - -- -------------------- ----- -------- -- - -- ----- - ------------------ --------------- - ------------------- --------- -- ------------ --
在上面的代码中,我们创建了一个 Fastify 实例,并使用 get
方法来定义一个路由处理程序。路由处理程序是一个异步函数,接受一个 request
参数和一个 reply
参数。在这个例子中,我们简单地返回一个 JSON 对象,其中包含一个 hello
属性。最后,我们使用 listen
方法来启动服务器,并在控制台输出服务器地址。
路由
在 Fastify 中,路由是由 HTTP 方法、URL 路径和路由处理程序组成的。以下是一个示例,演示了如何使用 Fastify 来定义一个 POST 路由:
fastify.post('/users', async (request, reply) => { const user = request.body // Save user to database return user })
在上面的代码中,我们使用 post
方法来定义一个 POST 路由。路由的路径是 /users
,路由处理程序将从请求正文中读取用户对象,并将其保存到数据库中。最后,路由处理程序将用户对象返回给客户端。
请求和响应
在 Fastify 中,请求和响应对象都被封装在 request
和 reply
参数中。以下是一些常用的方法和属性:
请求对象
request.body
:请求正文的解析后的对象。request.params
:路由路径中的参数。request.query
:URL 查询字符串的解析后的对象。request.headers
:HTTP 标头的对象。request.ip
:客户端 IP 地址。request.hostname
:客户端主机名。request.raw
:原始请求对象。
响应对象
reply.send(data)
:将数据发送到客户端。reply.code(statusCode)
:设置响应状态码。reply.header(key, value)
:设置响应标头。reply.type(type)
:设置响应的 MIME 类型。
以下是一个示例,演示了如何使用请求和响应对象来处理 HTTP 请求:
fastify.get('/', async (request, reply) => { const name = request.query.name || 'world' reply.type('application/json').send({ hello: name }) })
在上面的代码中,我们使用 get
方法来定义一个 GET 路由。路由处理程序从查询字符串中读取一个名为 name
的参数,并将其包含在响应对象中返回给客户端。我们使用 type
方法设置响应的 MIME 类型为 application/json
。
插件
Fastify 中的插件是一种可重用的功能模块,可以在多个应用程序中共享。插件可以添加路由、处理程序、中间件等。以下是一个示例,演示了如何使用插件来添加身份验证功能:
-- -------------------- ---- ------- ----- ----------- - ----------------------- ----------------------------- -------------------------------- ----- --------- ------ -- - -- ----- -------------- ----- -- -------------------------------- - ----- --- --------------------- - -- ----------------------- - ----------- -------------------- -- ----- --------- ------ -- - ------ - ------- ----- -- - ------ -------- - --
在上面的代码中,我们使用 register
方法来注册 fastify-auth
插件。我们使用 decorate
方法来添加一个名为 authenticate
的方法,该方法将在路由处理程序之前执行。在我们的示例中,我们检查请求标头中是否包含身份验证令牌。如果没有,则抛出一个错误。
我们使用 preHandler
选项来指定要在路由处理程序之前执行的方法。在我们的示例中,我们使用 fastify.authenticate
方法来检查身份验证令牌。如果身份验证失败,则路由处理程序不会被调用。
结语
Fastify 是一个快速、低开销、可扩展的 Node.js Web 框架。它的简洁明了的 API,使得开发者可以快速上手,快速构建高效的 Web 应用程序。本文提供了一些基本的示例,帮助您快速入门 Fastify,并了解其基本概念和功能。如果您想深入了解 Fastify,请查看官方文档。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67d20424a941bf71343f7a49