recoveryMiddleware 恢复中间件
(next http.Handler)
| 126 | |
| 127 | // recoveryMiddleware 恢复中间件 |
| 128 | func recoveryMiddleware(next http.Handler) http.Handler { |
| 129 | return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |
| 130 | defer func() { |
| 131 | if err := recover(); err != nil { |
| 132 | log.Errorf("Panic recovered: %v", err) |
| 133 | WriteError(w, http.StatusInternalServerError, "internal_error", "internal server error") |
| 134 | } |
| 135 | }() |
| 136 | next.ServeHTTP(w, r) |
| 137 | }) |
| 138 | } |
| 139 | |
| 140 | // responseWriter 包装 http.ResponseWriter 以捕获状态码 |
| 141 | type responseWriter struct { |
no test coverage detected