Regex не работает в функции Golang HandleFunc - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь перенаправить URL на основе шаблона в Go. Если мой URL-адрес содержит «clientApi», я отправляю его в функцию clientApiPoint, в противном случае я отправляю его в функцию redirectApiPoint. Моя функция handleRequest равна

func handleRequest()  {
    r := mux.NewRouter()
    r.HandleFunc("/", homePage)
    r.HandleFunc("/clientApi", clientApiPoint)
    r.HandleFunc("/{^((?!clientApi).)*$}", redirectApiPoint)
    http.Handle("/", r)
    log.Fatal(http.ListenAndServe(":8081", nil))
} 

{^ ((?! clientApi).) * $} Регулярное выражение работает нормально, если мой URL-адрес похож на

localhost:8081/somerandonurl  (sending it to redirectApiPoint func)

но если в URL есть один или несколько символов "/", регулярное выражение не перенаправляет его на функцию redirectApiPoint.

localhost:8081/somerandonurl/somethingdifferent    (not sending it to redirectApiPoint. 404 page not found message)

1 Ответ

1 голос
/ 06 мая 2019

ваш Regex работает на "localhost: 8081 / somerandonurl" из-за первого "/", поэтому он соответствует.

вам нужно что-то вроде "/(.*$)", но это будет соответствовать любому / blala/blala/...

вы можете проверить свое регулярное выражение здесь: Regex

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...