主题
请求与响应对象
在 Fastify 中,每个路由处理函数都会接收两个参数:request
和 reply
。它们分别用于访问客户端请求内容和构建服务端响应。
request 对象
request
提供对请求信息的访问,常用属性包括:
request.query
获取 URL 查询参数:
js
// GET /search?q=fastify
fastify.get('/search', async (request) => {
const { q } = request.query;
return { result: `You searched: ${q}` };
});
request.params
获取路径参数:
js
// GET /user/123
fastify.get('/user/:id', async (request) => {
const { id } = request.params;
return { userId: id };
});
request.body
获取请求体(用于 POST、PUT 等请求):
js
fastify.post('/login', async (request) => {
const { username, password } = request.body;
return { username };
});
request.headers
访问请求头:
js
fastify.get('/header', async (request) => {
const agent = request.headers['user-agent'];
return { agent };
});
reply 对象
reply
用于设置响应内容、状态码和头部信息等。
reply.send(data)
发送响应数据:
js
reply.send({ message: 'Success' });
reply.code(statusCode)
设置响应状态码:
js
reply.code(201).send({ message: 'Created' });
reply.header(name, value)
设置响应头:
js
reply.header('X-Custom', 'value').send({ done: true });
默认行为
如果你使用 async
函数并返回一个值,Fastify 会自动调用 reply.send()
:
js
fastify.get('/', async () => {
return { hello: 'world' };
});
掌握 request
和 reply
是构建高质量 API 服务的基础。