首页 > 解决方案 > 如何获取路线的所有可用方法?

问题描述

我已经这样定义了我的路线:

func Setup(router *mux.Router) {
    subrouter := router.PathPrefix("/user").Subrouter()

    subrouter.HandleFunc("/", get).Methods(http.MethodGet)
    subrouter.HandleFunc("/", post).Methods(http.MethodPost)
    subrouter.HandleFunc("/{id:[0-9]+}", put).Methods(http.MethodPut)
    subrouter.HandleFunc("/{id:[0-9]+}", del).Methods(http.MethodDelete)
}

由于 GET 和 POST 请求共享相同的路径(/user),我想像这样将它们放在一个切片中:["GET", "POST"]

然后在 GET 请求的处理程序中,我尝试获取Route结构,并从那里获取其所有相关方法,但我只有一个"GET"内部切片。

我怎样才能把它们都放在一个切片"GET""POST"

func get(w http.ResponseWriter, r *http.Request) {
    route := mux.CurrentRoute(r)
    fmt.Print(route.GetMethods()) // only ["GET"]
    pathName, _ := route.GetPathTemplate()
    // data := services.GetUsers()
    // res := siren.NewResponse(r, data)
    // utils.Json(w, http.StatusOK, res)
}

标签: gogorilla

解决方案


推荐阅读