教程 fastify tutorial

路由注册与嵌套

Fastify 提供简洁灵活的路由定义方式,并支持模块化组织与嵌套注册,方便构建结构清晰的服务。

基本路由注册

Fastify 使用对应 HTTP 方法的函数进行路由注册,如 .get()、.post()、.put() 等:

js
fastify.get('/ping', async () => {
  return { pong: true };
});

路径参数

通过冒号定义路径参数:

js
fastify.get('/user/:id', async (request) => {
  const { id } = request.params;
  return { id };
});

支持多个参数和正则匹配:

js
fastify.get('/order/:orderId(\\d+)', async (request) => {
  return { order: request.params.orderId };
});

嵌套路由与前缀

使用 .register() 方法可以组织嵌套路由,并设置路径前缀:

js
// user-routes.js
async function userRoutes(fastify) {
  fastify.get('/', async () => {
    return [{ id: 1, name: 'Alice' }];
  });

  fastify.get('/:id', async (request) => {
    return { id: request.params.id };
  });
}

module.exports = userRoutes;

在主文件中注册模块并指定前缀:

js
fastify.register(require('./user-routes'), { prefix: '/users' });

访问路径为:

  • /users/ → 用户列表
  • /users/:id → 获取指定用户信息

方法约束与 schema

可为每个路由定义 method 和 schema,明确其行为:

js
fastify.route({
  method: 'POST',
  url: '/submit',
  schema: {
    body: {
      type: 'object',
      required: ['name'],
      properties: {
        name: { type: 'string' }
      }
    }
  },
  handler: async (request) => {
    return { ok: true };
  }
});

合理组织路由结构,有助于维护大型应用的可读性与模块化。