Я настраиваю конечную точку api, которая после анализа URL-адреса я бы получил путь, например /profile/<username>
, например, /profile/markzuck
Имя пользователя не является обязательным, хотя эта конечная точка возвращает профиль аутентифицированного пользователя если имя пользователя пустое
Набор правил:
Я не лучший в регулярном выражении, но я создал выражение, которое требует /profile
после этого, если есть следующий /
например, /profile/
тогда вам нужно иметь <username>
, который соответствует (\w){1,15}
. Также я хочу, чтобы ему было разрешено сопоставлять любое количество комбинаций, если есть еще один следующий /
, например, /profile/<username>/<if preceding "/" then anything else>
Хотя я не на 100% уверен, что мое выражение правильное, похоже, это работает в JavaScript
/^\/(profile)(\/(?=(\w){1,15}))?/
Gorilla Mux, хотя и отличается, и он требует, чтобы строка соответствия маршрута всегда начиналась с sla sh и некоторых других вещей, которые я не понимаю, например, он может использовать только не- группы захвата
(выяснилось, получив эту ошибку: pani c: route / {_ dummy: profile / ([a-zA-Z_])?} содержит группы захвата в своем регулярном выражении. Только группы, не предназначенные для захвата, принято: например (?: шаблон) вместо (шаблон))
Я попытался использовать то же выражение, которое использовал для JavaScript, которое здесь не сработало. Я создал более простое выражение handlerFunc("/{_dummy:profile\/[a-zA-Z_].*}")
, которое действительно работает, но на самом деле оно не соответствует тому же набору правил, который я использую в своем выражении JavaScript.
Я смог придумать свое рабочее выражение из этого сообщения SO здесь
И в документации Gorilla Mux немного рассказывается о том, как работает их регулярное выражение, когда объясняется, как использовать пакет во вводном разделе здесь
Мой вопрос: какое выражение, похожее или эквивалентное описанному мной набору правил, будет работать в Gorilla Mux HandlerFunc()
?