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 响应记录器的主要内容,如果未能解决你的问题,请参考以下文章

从PHP Laravel 到 Go Iris--路由篇

iris后端框架

Go-零基础开发Web

Go Iris 中间件

Iris——整合go-playground/validator参数校验Demo

004-Go iris 接收post json数据