server.go
func (s *Server) Before(handlers ...http.HandlerFunc) {
	original := s.handlerFn
	s.handlerFn = func(w http.ResponseWriter, r *http.Request) {
		for _, handler := range handlers {
			handler(w, r)
		}
		original(w, r)
	}
}
func (s *Server) Before(handlers ...http.HandlerFunc) {
	original := s.handlerFn
	s.handlerFn = func(w http.ResponseWriter, r *http.Request) {
		for _, handler := range handlers {
			handler(w, r)
		}
		original(w, r)
	}
}
// Before applys any http.HandlerFunc to the request before
// sending it on to the controller/processor. Note that if a
// handler incecepts the body of the request via request.Body
// they must ensure it's contents are added back to request
// or signature verification will fail!