路由参数与 Query

Fastify 中,可以通过 request.params 获取路径中的动态参数,通过 request.query 获取 URL 中的查询参数。

路由参数(Path Parameters)

使用冒号 : 来定义动态路径参数,例如:

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

访问 /user/123 会返回:

{
  "userId": "123"
}

支持多个参数:

fastify.get('/post/:postId/comment/:commentId', async (request) => {
  const { postId, commentId } = request.params;
  return { postId, commentId };
});

查询参数(Query Parameters)

用于处理 URL 中的 ?key=value 参数,例如:

fastify.get('/search', async (request) => {
  const { keyword, page } = request.query;
  return { keyword, page };
});

访问 /search?keyword=fastify&page=2 会返回:

{
  "keyword": "fastify",
  "page": "2"
}

Fastify 不限制参数个数和结构,但建议配合 Schema 做验证与类型转换。

混合使用

可以同时使用路径参数与查询参数:

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

请求 /category/5?sort=desc 返回:

{
  "id": "5",
  "sort": "desc"
}