Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save bimbimprasetyoafif/bd48a0bc4c49057e54d7c398ce25943c to your computer and use it in GitHub Desktop.
Save bimbimprasetyoafif/bd48a0bc4c49057e54d7c398ce25943c to your computer and use it in GitHub Desktop.
Middleware Example Echo Golang
package main
import (
"fmt"
"github.com/labstack/echo/v4"
"net/http"
)
/*
1. type MiddlewareFunc func(next HandlerFunc) HandlerFunc
2. type HandlerFunc func(c Context) error
3. func (e *Echo) GET(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
*/
func main() {
e := echo.New()
f := e.Group("/first", MiddlewareFirst)
f.GET("", FirstHandler)
s := e.Group("/second", MiddlewareSecond)
s.GET("", SecondHandler)
e.Logger.Fatal(e.Start(":8888"))
}
func FirstHandler(c echo.Context) error {
fmt.Println("Ini Handler 1")
return c.String(http.StatusOK, "Hello, World!")
}
func SecondHandler(c echo.Context) error {
fmt.Println("Ini Handler 2")
return c.String(http.StatusOK, "Hello, World!")
}
func MiddlewareFirst(next echo.HandlerFunc) echo.HandlerFunc {
// logic middleware
return func(c echo.Context) error {
// logic middleware
if c.Request().Header.Get("User-Agent") != "POSTMAN" {
return c.JSON(401, nil)
}
return next(c)
}
}
func MiddlewareSecond(next echo.HandlerFunc) echo.HandlerFunc {
// logic middleware
return func(c echo.Context) error {
// logic middleware
fmt.Println("ini middleware second")
//if true {
// return c.JSON(401, nil)
//}
return next(c)
}
}
/*
MiddlewareSecond[ MiddlewareFirst[ FirstHandler[ eksekusi ] ] ]
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment