golang 獲取statuscode


 最近日志打印的時候需要打印狀態碼,但是因為interface的原因直接獲取失敗,http.Request里面的response不知道怎么使用,所以就自己重寫writeheader,write來截取status

type doneWriter struct {
    http.ResponseWriter
    done bool
   status int } func (w *doneWriter) WriteHeader(status int) { w.done = true
   w.status= status w.ResponseWriter.WriteHeader(status) } func (w *doneWriter) Write(b []byte) (int, error) { w.done = true return w.ResponseWriter.Write(b) } func myMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { dw := &doneWriter{ResponseWriter: w} next.ServeHTTP(dw, r) if dw.done { // Something already wrote a response return } // Nothing else wrote a response w.WriteHeader(http.StatusOK) // Whatever you want here } }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM