推荐答案
在 Fastify 中,定义路由的基本语法如下:
fastify.route({ method: 'HTTP方法', // 例如 'GET', 'POST', 'PUT', 'DELETE' 等 url: '/路由路径', // 例如 '/users', '/users/:id' 等 handler: async (request, reply) => { // 处理请求的逻辑 return { message: 'Hello, Fastify!' }; } });
示例代码
-- -------------------- ---- ------- ----- ------- - -------------------- ------- ---- --- --------------- ------- ------ ---- --------- -------- ----- --------- ------ -- - ------ - ------ --------- ------ ---------- -- - --- -------------------- ----- -- - -- ----- - ----------------------- ---------------- - ------------------------ -- ------- -- ------------------------ ---
本题详细解读
1. method
参数
method
参数用于指定 HTTP 请求方法,常见的值包括 GET
、POST
、PUT
、DELETE
等。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
字段存在且为字符串类型。