推荐答案
在 Fastify 中,onTimeout
钩子用于在请求超时时执行特定的逻辑。你可以在路由或插件中使用 onTimeout
钩子来处理超时事件。
fastify.addHook('onTimeout', async (request, reply) => { // 在这里处理超时逻辑 console.log('请求超时'); reply.code(504).send({ error: '请求超时' }); });
本题详细解读
1. onTimeout
钩子的作用
onTimeout
钩子允许你在请求超时时执行自定义逻辑。这个钩子通常用于记录日志、发送错误响应或执行其他清理操作。
2. 使用场景
- 记录日志:当请求超时时,记录相关信息以便后续分析。
- 发送自定义错误响应:返回一个特定的错误响应,而不是默认的超时响应。
- 资源清理:在超时发生时,释放占用的资源或取消未完成的操作。
3. 示例代码解析
fastify.addHook('onTimeout', async (request, reply) => { // 在这里处理超时逻辑 console.log('请求超时'); reply.code(504).send({ error: '请求超时' }); });
fastify.addHook('onTimeout', ...)
:注册一个onTimeout
钩子。request
和reply
:分别代表当前请求和响应对象。reply.code(504).send({ error: '请求超时' })
:发送一个 504 状态码和自定义的错误信息。
4. 注意事项
onTimeout
钩子仅在请求超时时触发,因此你需要确保 Fastify 实例的超时设置是合理的。- 在
onTimeout
钩子中,避免执行耗时操作,因为这可能会导致请求处理时间进一步延长。
通过使用 onTimeout
钩子,你可以更好地控制 Fastify 应用在请求超时时的行为,提升应用的健壮性和用户体验。