Я использую gorilla / mux У меня есть это:
router.HandleFunc("/api/v1/register",h.makeRegisterNewUser(v)).Methods("POST")
и h.makeRegisterNewUser
выглядит так:
func (h Handler) makeRegisterNewUser(v interface{}) http.HandlerFunc {
type RespBody = ...;
type ReqBody = ...
return func(w http.ResponseWriter, r *http.Request) {
decoder := json.NewDecoder(r.Body)
err := decoder.Decode(&ReqBody)
// ...
json.NewEncoder(w).Encode(RespBody{});
}
}
мой вопрос - есть ли способ вернуть несколько http.HandlerFuncs от makeRegisterNewUser?Примерно так:
router.HandleFunc("/api/v1/register",h.makeRegisterNewUser(v)).Methods("POST")
func (h Handler) makeRegisterNewUser(v interface{}) (http.HandlerFunc...) {
type RespBody = ...;
type ReqBody = ...
return func(w http.ResponseWriter, r *http.Request) {
// 1
}, func(w http.ResponseWriter, r *http.Request) {
// 2
}, func(w http.ResponseWriter, r *http.Request) {
// 3
}
}
Я не уверен, можно ли связать промежуточное ПО в Go, как это происходит в Node.js Express.