深入理解与使用go之--中间件实现
目录
引子
我们在做web开发的时候,经常会遇到下面一些需求:
统计耗时:想程序内部统计某个路由的请求耗时
预处理:接口需要登录鉴权后才能继续进行
错误捕获:当程序运行发生错误时,我们需要及时捕获
日志记录:有时候需要记录请求与响应的参数
那怎么办呢,调用内部硬编码吗
func bbHandle(writer http.ResponseWriter, request *http.Request) {
// 3. 错误捕获
defer func() {
if p := recover(); p != nil {
log.Panicln(p)
}
}()
// 1. 统计耗时
start := time.Now()
// 2. 登录校验
if re