Я работал над проектом Go, где в качестве маршрутизатора используется gorilla / mux.
Мне нужно иметь возможность иметь значения запроса, связанные с маршрутом, но эти значения должны быть необязательными. Это означает, что я хотел бы поймать и /articles/123
, и /articles/123?key=456
в одном обработчике.
Для этого я попытался использовать метод r.Queries
, который принимает пары ключ / значение: router.
Path("/articles/{id:[0-9]+}").Queries("key", "{[0-9]*?}")
но это делает необязательным только значение (456
), но не key
. Таким образом, допустимы и /articles/123?key=456
, и /articles/123?key=
, но не /articles/123
.
Изменить: еще одно требование заключается в том, что после регистрации маршрута я хотел бы построить их программно, и я не могу понять, как использовать r.Queries
, хотя в документации конкретно указано, что это возможно (https://github.com/gorilla/mux#registered-urls).
Ответ @jmaloney работает, но не позволяет создавать URL-адреса из имен.
mux.Vars(req)["tab"]
в моем обработчике 2. он не позволяет мне создавать зарегистрированные URL-адреса по имени (я обновил вопрос) - person stassinari   schedule 28.07.2017