Fastify 中如何定义路由?

推荐答案

在 Fastify 中,定义路由的基本语法如下:

示例代码

-- -------------------- ---- -------
----- ------- - -------------------- ------- ---- ---

---------------
  ------- ------
  ---- ---------
  -------- ----- --------- ------ -- -
    ------ - ------ --------- ------ ---------- --
  -
---

-------------------- ----- -- -
  -- ----- -
    -----------------------
    ----------------
  -
  ------------------------ -- ------- -- ------------------------
---

本题详细解读

1. method 参数

method 参数用于指定 HTTP 请求方法,常见的值包括 GETPOSTPUTDELETE 等。Fastify 支持所有标准的 HTTP 方法。

2. url 参数

url 参数用于定义路由的路径。路径可以是静态的(如 /users),也可以是动态的(如 /users/:id)。动态路径中的参数可以通过 request.params 访问。

3. handler 参数

handler 是一个异步函数,用于处理请求并返回响应。它接收两个参数:

  • request:包含请求的所有信息,如请求头、请求体、查询参数等。
  • reply:用于发送响应,可以设置状态码、响应头、响应体等。

4. 异步处理

Fastify 的 handler 函数通常是异步的,因此可以使用 async/await 语法来处理异步操作。返回的值会自动被序列化为 JSON 并发送给客户端。

5. 路由前缀

Fastify 还支持为路由添加前缀,可以通过 fastify.register 方法来实现:

-- -------------------- ---- -------
---------------------- --------- -------- -- -
  ---------------
    ------- ------
    ---- ---------
    -------- ----- --------- ------ -- -
      ------ - ------ --------- ------ ---------- --
    -
  ---
-- - ------- ------ ---

在这个例子中,路由 /users 的实际路径将是 /api/users

6. 路由选项

Fastify 的路由定义还支持其他选项,如 schema 用于请求和响应的验证,preHandler 用于在请求处理之前执行中间件等。

-- -------------------- ---- -------
---------------
  ------- -------
  ---- ---------
  ------- -
    ----- -
      ----- ---------
      --------- ---------
      ----------- -
        ----- - ----- -------- -
      -
    -
  --
  -------- ----- --------- ------ -- -
    ----- - ---- - - -------------
    ------ - -------- ----- ------- -------- --
  -
---

在这个例子中,schema 用于验证请求体,确保 name 字段存在且为字符串类型。

纠错
反馈