Fastify 是一个快速、低开销、可扩展的 Node.js Web 框架。它使用了一些最新的 JavaScript 特性,如 async/await 和 ES Modules,以提供更好的性能和可维护性。本文将向初学者介绍 Fastify 框架的基础知识,并提供实用的示例代码和指导意义。
安装 Fastify
安装 Fastify 很简单,只需要在终端中运行以下命令:
npm install fastify
这将在您的项目中安装 Fastify 框架及其所有依赖项。
创建一个 Fastify 应用程序
要创建一个 Fastify 应用程序,您需要创建一个新的 JavaScript 文件并导入 Fastify 模块。以下是一个简单的示例:
// javascriptcn.com 代码示例 const fastify = require('fastify')() fastify.get('/', async (request, reply) => { return { hello: 'world' } }) fastify.listen(3000, (err, address) => { if (err) throw err console.log(`Server listening on ${address}`) })
这个应用程序创建了一个 Fastify 实例,并在根路径上定义了一个 GET 路由,返回一个简单的 JSON 响应。最后,它将服务器绑定到端口 3000 并开始监听连接。
路由
Fastify 使用 fastify.route()
方法来定义路由。以下是一个示例:
fastify.route({ method: 'GET', url: '/', handler: async (request, reply) => { return { hello: 'world' } } })
在这个示例中,我们使用了对象字面量来定义路由。我们指定了请求方法和 URL,以及处理程序函数。处理程序函数接收请求对象和响应对象,并返回一个值或一个 Promise。
您还可以使用链式调用来定义路由:
fastify .get('/', async (request, reply) => { return { hello: 'world' } }) .post('/users', async (request, reply) => { const user = await createUser(request.body) reply.code(201).send(user) })
验证
Fastify 提供了一个内置的验证库,用于验证请求和响应。以下是一个示例:
// javascriptcn.com 代码示例 fastify.post('/login', { schema: { body: { type: 'object', required: ['username', 'password'], properties: { username: { type: 'string' }, password: { type: 'string' } } } } }, async (request, reply) => { const { username, password } = request.body const user = await db.getUserByUsername(username) if (!user || user.password !== password) { reply.code(401).send({ message: 'Invalid credentials' }) } else { reply.send({ token: createToken(user.id) }) } })
在这个示例中,我们使用 schema
属性来定义请求体的验证规则。如果请求体不符合规则,则 Fastify 会自动返回 400 响应。如果验证通过,则处理程序将返回一个带有 JWT 令牌的成功响应。
插件
Fastify 允许您使用插件来扩展应用程序功能。插件是一个包含注册函数的 JavaScript 模块,该函数接收 Fastify 实例和一些选项,并注册路由、中间件等功能。以下是一个示例:
// javascriptcn.com 代码示例 // my-plugin.js module.exports = function (fastify, options, done) { fastify.decorate('myPlugin', () => { return 'Hello, world!' }) done() } // app.js const fastify = require('fastify')() fastify.register(require('./my-plugin')) fastify.get('/', async (request, reply) => { const message = fastify.myPlugin() reply.send({ message }) })
在这个示例中,我们创建了一个插件,它向 Fastify 实例添加了一个名为 myPlugin
的装饰器。我们然后在一个路由处理程序中使用该插件。
总结
Fastify 是一个快速、低开销、可扩展的 Node.js Web 框架,它使用了一些最新的 JavaScript 特性,如 async/await 和 ES Modules。本文介绍了 Fastify 的基础知识,包括路由、验证和插件。我们还提供了实用的示例代码和指导意义,以帮助初学者快速上手。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/656dc141d2f5e1655d5ff27f