Middleware
Middleware is middle man to handle http request.
In Java, Filter is same. In node.js, we call same name middleware.
In Go Web Application, to support this as wrapped function.
It’s better to take a look codes to understand middleware
Example
|- web | |- middlewareweb.go |- main.go
It’s simple structure. Implement middleware function and handler in middleware.go
and usage is main.go
middlewareweb.go
package web import ( "log" "net/http" ) func MiddlewareHandleFunc(handler http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { log.Println("Executing Middleware- Before handler") handler.ServeHTTP(w, r) log.Println("Executing Middleware - After handler") }) } type MiddleHandler struct { Message string } func (f *MiddleHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { w.Write([]byte(f.Message)) }
MiddleHandler is struct which implements ServeHTTP.
MiddlewareHandleFunc is middleware to wrap request.
This middleware outputs log before request, after request
O.K. Let’ check how to use MiddlewareHandleFunc
main.go
package main import ( "net/http" "github.com/DJ110/gorefs/web" ) func main() { http.Handle("/main", web.MiddlewareHandleFunc(&(web.MiddleHandler{Message: "Hello Web"}))) log.Fatal(http.ListenAndServe(":8080", nil)) }
Middleware is wrapped with Handle method.
コメント