Skip to content

Instantly share code, notes, and snippets.

@nanoninja
Created December 10, 2015 21:09
Show Gist options
  • Save nanoninja/a47757e546e96897de19 to your computer and use it in GitHub Desktop.
Save nanoninja/a47757e546e96897de19 to your computer and use it in GitHub Desktop.
Simple HTTP Middleware
package main
import (
"fmt"
"log"
"net/http"
)
func myHandler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("myHandler\n"))
}
type middleware []http.Handler
func (m *middleware) Add(handler http.Handler) {
*m = append(*m, handler)
}
func (m middleware) ServeHTTP(w http.ResponseWriter, r *http.Request) {
for _, handler := range m {
handler.ServeHTTP(w, r)
}
}
func main() {
mux := http.NewServeMux()
mw := make(middleware, 0)
mw.Add(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("test middleware\n"))
}))
mw.Add(http.HandlerFunc(myHandler))
mux.Handle("/", mw)
log.Fatal(http.ListenAndServe(":3000", mux))
fmt.Println("Server is running...")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment