Вы можете проверить, как violetear обрабатывает шаблоны динамического + универсального (подстановочного) символа, это только для дополнения, например:
uuid := `[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}`
router.AddRegex(":uuid")
router.HandleFunc("/test/:uuid/:uuid", handleUUID, "GET,HEAD")
В этом случае запрос может иметь 2 разных UUIDS
Для динамического / подстановочного знака это может применяться:
http://api.violetear.org/command/ping/127.0.0.1
\______/\___/\________/
| | |
static |
dynamic
Для сопоставления IP может использоваться регулярное выражение:
router.AddRegex(":ip", `^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$`)
router.HandleFunc("/command/ping/:ip", ipHandler, "GET")
Или просто поймать все, разрешив только GET
и HEAD
методы:
router.HandleFunc("/command/ping/*", anyHandler, "GET, HEAD")
Дополнительные примеры можно найти здесь: https://violetear.org/post/how-it-works/