AI通识课
如何在Middleware中对请求进行拦截并做后期处理?
想法很美好,现实很打脸。
middleware与handler相比,一个显著的特征是,它没有返回值(void)。
所以,middleware对整个处理链条的干预是通过forward给下一个handler或者抛出异常两种方式实现的。
比如JWT中间件在检查JWT的时候,发现JWT验证失败的情况下,会通过抛出HTTPException来中断执行流程。
所以,假如我想在验证失败后让用户的页面自动跳转到登录页面,就得通过覆写(override)honoApp的onError回调方法来实现:
当然,也可能是我一厢情愿了,总觉得应该像FilterChain那样,最外层的Middleware原则上应该可以捕捉里层的handler结果并进行后处理的。(当然,如果你不了解Java早期的Servlet框架设计,这句可以忽略)
「架构师的修炼」大礼包
管理者入门与进阶课程