2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > go 框架iris 响应记录器

go 框架iris 响应记录器

时间:2022-12-05 01:37:35

相关推荐

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""/kataras/iris/v12"//"/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")}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。