Go Web Application Middleware

スポンサーリンク

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.

golang
スポンサーリンク
Professional Programmer2

コメント