Как использовать Gorilla Mux для сопоставления URL? - PullRequest
0 голосов
/ 10 марта 2020

У меня есть функция проверки, чтобы проверить, соответствует ли данный путь пути в массиве путей.

Current Logi c:

var allowed := String{"/users", "/teams"}
func Validator(path String) bool {
   for _, p := range allowed {
     if path == p {
        return true
     }
   }
   return false
}

Я хочу заменить это, используя golang горилла мукс, потому что у меня могут быть переменные пути. Github-репозиторий mux сообщает: «HTTP-маршрутизатор и URL matcher ». однако нет примеров того, как использовать его для сопоставления URL.

1 Ответ

1 голос
/ 10 марта 2020

Вот как я решил это, используя код:

// STEP 1: create a router
router := mux.NewRouter()

// STEP 2: register routes that are allowed
router.NewRoute().Path("/users/{id}").Methods("GET")
router.NewRoute().Path("/users").Methods("GET")
router.NewRoute().Path("/teams").Methods("GET")

routeMatch := mux.RouteMatch{}

// STEP 3: create a http.Request to use in Mux Route Matcher
url := url.URL { Path: "/users/1" }
request := http.Request{ Method:"GET", URL: &url }

// STEP 4: Mux's Router returns true/false
x := router.Match(&request, &routeMatch)
fmt.Println(x) // true

url = url.URL { Path: "/other-endpoint" }
request = http.Request{ Method:"GET", URL: &url }

x = router.Match(&request, &routeMatch)
fmt.Println(x) // false
...