登录
首页 >  Golang >  Go问答

如何使用 chi 路由器记录 HTTP 返回码?

来源:stackoverflow

时间:2024-02-25 21:45:29 132浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《如何使用 chi 路由器记录 HTTP 返回码?》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

我使用 chi 作为我的路由器,并编写了一个简单的中间件来记录发出的请求:

func logCalls(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        log.Info().Msgf("%v → %v", r.URL, r.RemoteAddr)
        next.ServeHTTP(w, r)
    })
}

它工作得很好,但我缺少 http 返回代码。

一旦所有路由都用尽,http 返回代码显然将可用,但同时我必须在路由之前使用我的中间件。

有没有办法在路由完成后挂钩它,从而获得可以记录的返回代码?


正确答案


NewWrapResponseWriter为我工作:

import "github.com/go-chi/chi/v5/middleware"

func logCalls(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        ww := middleware.NewWrapResponseWriter(w, r.ProtoMajor)
        next.ServeHTTP(ww, r)
        log.Info().Msgf("%v → %v %v", r.URL, r.RemoteAddr, ww.Status())
        
    })
}

我认为你需要 go-chi 库中的 render
https://github.com/go-chi/render/tree/v1.0.1

使用示例如下:
https://github.com/go-chi/chi/blob/master/_examples/rest/main.go

以上就是《如何使用 chi 路由器记录 HTTP 返回码?》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>