()
Test code
package main import ( "fmt" "/gin-gonic/gin" "log" "net/http" ) func main() { g := () (middleware1(), middleware2()) ("/", func(c *) { ("process request") (, "hello,world!") }) err := () if err != nil { (err) } } func middleware1() { return func(c *) { ("middleware1 start") () ("middleware1 end") } } func middleware2() { return func(c *) { ("middleware2 start") () ("middleware2 end") } }
Visit http://127.0.0.1:8080 The execution result is as follows, and the browser outputs "hello,world!"
middleware1 start
middleware2 start
process request
middleware2 end
middleware1 end
Summarize
The execution order of middleware is executed in the order of registration. When using the () method in the middleware, the previous one will be executed first, and then the control will be passed to the next middleware or processor, and finally the code after middleware() will be executed in the reverse order. () Test code
package main import ( "fmt" "/gin-gonic/gin" "log" "net/http" ) func main() { g := () (middleware1(), middleware2(), middleware3()) ("/", func(c *) { ("process request") (, "hello,world!") }) err := () if err != nil { (err) } } func middleware1() { return func(c *) { ("middleware1 start") () ("middleware1 end") } } func middleware2() { return func(c *) { ("middleware2 start") () ("middleware2 end") } } func middleware3() { return func(c *) { ("middleware3 start") () ("middleware3 end") } }
Visit http://127.0.0.1:8080 The execution result is as follows, the browser has no output
middleware1 start
middleware2 start
middleware2 end
middleware1 end
Summarize
The execution order of middleware is executed in the registration order. The middleware can abort the subsequent middleware or processor processing flow through ().
return test code
package main import ( "fmt" "/gin-gonic/gin" "log" "net/http" ) func main() { g := () (middleware1(), middleware2(), middleware3()) ("/", func(c *) { ("process request") (, "hello,world!") }) err := () if err != nil { (err) } } func middleware1() { return func(c *) { ("middleware1 start") () ("middleware1 end") } } func middleware2() { return func(c *) { ("middleware2 start") return ("middleware2 end") } } func middleware3() { return func(c *) { ("middleware3 start") () ("middleware3 end") } }
Visit http://127.0.0.1:8080 The execution result is as follows, and the browser outputs "hello,world!"
middleware1 start
middleware2 start
middleware3 start
process request
middleware3 end
middleware1 end
Summarize
The execution order of the middleware is executed in the registration order. The middleware can abort the subsequent processing flow of the current middleware through retrurn.
() +return test code
package main import ( "fmt" "/gin-gonic/gin" "log" "net/http" ) func main() { g := () (middleware1(), middleware2(), middleware3()) ("/", func(c *) { ("process request") (, "hello,world!") }) err := () if err != nil { (err) } } func middleware1() { return func(c *) { ("middleware1 start") () ("middleware1 end") } } func middleware2() { return func(c *) { ("middleware2 start") () return ("middleware2 end") } } func middleware3() { return func(c *) { ("middleware3 start") () ("middleware3 end") } }
Visit http://127.0.0.1:8080 The execution result is as follows, the browser has no output
middleware1 start
middleware2 start
middleware1 end
Summarize
The execution order of middleware is executed in the registration order. The middleware can abort the current middleware, subsequent middleware and processor processing flow through () + retrurn.
This is the article about the use of go gin middleware on (), () and return. For more related go gin middleware (), () and return, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!