go 框架iris 响应记录器
Posted qianbo_insist
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go 框架iris 响应记录器相关的知识,希望对你有一定的参考价值。
iris
go 语言 iris 是一个强大的框架,写一个http 服务是比较方便的,记录他收到的所有参数,方法等等也是有必要的, 使用logger来记录,以便于调试和发现错误,因为在测试没有充分的情况下,至少打开记录器,我们是可以发现一些问题的。
定义拦截器
定义一个before 中间件,在main中使用Use
func before(ctx iris.Context) {
ctx.Record()
requestPath := ctx.Path()
println("Before the mainHandler: " + requestPath)
body := ctx.Recorder().Body()
fmt.Printf("sent body %s %s\\n", string(body), ctx.RouteName())
//println(ctx.Request().Body)
println(ctx.Request().RequestURI)
ctx.Values().Set("info", "here")
//使用logger来记录,以便于调试和发现错误
ctx.Next() //执行下一个处理程序,在本例中为主要处理程序。
}
1 在main函数中使用app.Use(before) 来启动中间件
2 使用ctx.Record 来记录所有数据
3 中间件中可以获取其他如执行参数 ctx.Request().Body
事实上这里不一定要用Record,但是可以使用Record的原因是我们可以在这里修改!
show me the code
import (
"fmt"
"net/http"
"github.com/kataras/iris/v12"
//"github.com/lucas-clemente/quic-go/http3"
)
func before(ctx iris.Context) {
ctx.Record()
requestPath := ctx.Path()
println("Before the mainHandler: " + requestPath)
body := ctx.Recorder().Body()
fmt.Printf("sent body %s %s\\n", string(body), ctx.RouteName())
//println(ctx.Request().Body)
println(ctx.Request().RequestURI)
ctx.Values().Set("info", "here")
ctx.Next() //执行下一个处理程序,在本例中为主要处理程序。
}
func main() {
app := iris.New()
app.Use(before)
app.Get("/", func(ctx iris.Context) {
ctx.Writef("test")
})
app.Get("/aa", func(ctx iris.Context) {
ctx.Writef("aa")
})
app.Get("/test", func(ctx iris.Context) {
ctx.Writef("wao %s", ctx.Path())
})
srv := &http.Server{Addr: ":8080"}
app.Run(iris.Server(srv)) // same as app.Listen(":8080")
}
以上是关于go 框架iris 响应记录器的主要内容,如果未能解决你的问题,请参考以下文章