📅  最后修改于: 2023-12-03 14:41:09.744000             🧑  作者: Mango
Fastify 是一个快速、低开销、灵活以及可扩展的 Node.js Web 应用程序框架。Fastify 提供了线程安全的路由器、插件生态系统以及对记录、验证和错误处理等功能的支持。本文将介绍如何使用 Fastify 实现查询。
使用以下命令安装 Fastify:
npm install fastify
在使用 Fastify 查询之前,需要先创建一个 Fastify 服务器。可以使用以下代码:
const fastify = require('fastify')()
fastify.get('/', (request, reply) => {
reply.send('Hello, world!')
})
fastify.listen(3000, (err, address) => {
if (err) throw err
console.log(`Server listening on ${address}`)
})
在上面的例子中,我们创建了一个 Fastify 实例,定义了一个 /
路由,并启动了一个监听在 3000 端口的服务器。
Fastify 路由的查询参数通过 request.query
对象访问。例如,如果请求 URL 为 http://localhost:3000/?name=John&age=28
,则可以使用以下代码访问查询参数:
fastify.get('/', (request, reply) => {
const name = request.query.name
const age = request.query.age
reply.send(`Hello, ${name}! You are ${age} years old.`)
})
在上面的例子中,我们从 request.query
对象中获取 name
和 age
参数,并在响应中使用它们构建消息。
使用 request.query
时,如果参数未定义,则它的值将为 undefined
。为了避免这种情况,我们可以使用默认值。例如,以下代码将在 name
参数未定义时使用 World
作为默认值:
fastify.get('/', (request, reply) => {
const name = request.query.name || 'World'
reply.send(`Hello, ${name}!`)
})
Fastify 具有内置的查询参数验证功能。可以使用例如 fastify-sensible 插件的 fastify-schema
插件来实现验证。以下是一个示例:
fastify.register(require('fastify-sensible'))
const schema = {
querystring: {
type: 'object',
properties: {
name: { type: 'string' },
age: { type: 'integer' }
},
required: ['name']
}
}
fastify.get('/', { schema }, (request, reply) => {
const name = request.query.name
const age = request.query.age
reply.send(`Hello, ${name}! You are ${age} years old.`)
})
在上面的例子中,我们使用了一个查询参数模式来限制查询参数对象必需具有 name
属性,age
属性为可选的字符串。这个查询参数模式通过 schema
参数传递给路由定义。如果查询参数未通过验证,则 Fastify 会自动发送错误响应。
Fastify 查询提供了内置的查询参数验证和访问功能,这使得在框架中使用和操作查询参数非常容易。这个例子显示了如何实现出 Fastify 的查询功能。使用 Fastify 可以快速、低开销、灵活以及可扩展的 Node.js Web 应用程序开发。