推荐答案
在 Fastify 中处理 404 错误可以通过自定义 notFoundHandler 来实现。以下是一个示例代码:
// www.javascriptcn.com code example
const fastify = require('fastify')({ logger: true });
fastify.setNotFoundHandler((request, reply) => {
reply.code(404).send({ message: 'Route not found' });
});
fastify.get('/', async (request, reply) => {
return { hello: 'world' };
});
fastify.listen(3000, (err) => {
if (err) {
fastify.log.error(err);
process.exit(1);
}
});在这个示例中,setNotFoundHandler 方法用于定义当请求的路由不存在时的处理逻辑。当用户访问一个不存在的路由时,Fastify 会返回一个 404 状态码和自定义的错误消息。
本题详细解读
1. setNotFoundHandler 方法
setNotFoundHandler 是 Fastify 提供的一个方法,用于处理未找到路由的情况。它接受一个回调函数作为参数,该回调函数会在请求的路由不存在时被调用。
2. 回调函数的参数
回调函数有两个参数:
request:表示当前的请求对象,包含了请求的所有信息,如请求头、请求体等。reply:表示当前的响应对象,用于发送响应给客户端。
3. 自定义 404 响应
在回调函数中,你可以使用 reply.code(404) 来设置响应的状态码为 404,然后使用 reply.send 发送自定义的错误消息。在这个示例中,我们发送了一个包含 message 字段的 JSON 对象。
4. 示例代码解析
fastify.setNotFoundHandler:设置 404 处理程序。reply.code(404).send({ message: 'Route not found' }):返回 404 状态码和自定义消息。fastify.get('/'):定义一个根路由,返回{ hello: 'world' }。fastify.listen(3000):启动服务器并监听 3000 端口。
通过这种方式,你可以灵活地处理 Fastify 应用中的 404 错误,并根据需要返回自定义的错误信息。