主题
路由注册与嵌套
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 };
}
});
合理组织路由结构,有助于维护大型应用的可读性与模块化。