Pengertian Middleware
HttpRouter adalah library untuk membuat http router saja tidak memiliki fitur-fitur lain selain router dan router ini merupakan implememntasi dari http.Handler
bawaan dari Golang sendiri sehingga untuk membuat middleware kita bisa membuatnya sendiri seperti yang pernah kita buat pada Golang Web postingan sebelumnya yaitu
HTTP Middleware.
Cara Implementasi
Cara mengimplementasikannya memang sudah pernah kita coba pada postingan sebelumnya. Jika Anda belum pernah melihat bisa baca terlebih dahulu postingan sebelumnya bagaimana cara untuk membuat middleware pada HTTP Router. Nantinya akan kita coba modifikasi middleware ini sesuai dengan kebutuhan kita.
Terlebih dahulu kita buat seperti dibawah ini.
type LogMiddleware struct {
Handler http.Handler
}
func (middleware *LogMiddleware) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Printf("Before Execute Handler %s %s\n", r.Method, r.URL)
middleware.Handler.ServeHTTP(w, r)
fmt.Println("After Execute Handler")
}
Setelah itu kita akan memanggil LogMiddleware
ini pada file main.go
seperti ini.
...
...
middleware := &LogMiddleware{router}
server := http.Server{
Handler: middleware,
Addr: "localhost:8080",
}
..
...
Maka ketika kita jalankan service atau program dan kita lihat pada program misalkan kita akses salah satu endpointnya.
curl --location --request POST 'http://localhost:8080/panic'
Lalu kita lihat pada log service tersebut akan tercetak seperti ini.
Before Execute Handler POST /panic
After Execute Handler
Ini membuktikan bahwa setiap ada akses kepada router salah satu endpoint-nya akan melakukan cetak dua kalimat seperti diatas ini.