📜  fastify 查询 (1)

📅  最后修改于: 2023-12-03 14:41:09.744000             🧑  作者: Mango

Fastify 查询

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 对象中获取 nameage 参数,并在响应中使用它们构建消息。

查询参数默认值

使用 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 应用程序开发。