【发布时间】:2020-08-19 12:50:16
【问题描述】:
我正在设置一个 api 端点,在解析 url 后我会得到一个路径,例如 /profile/<username> e.g. /profile/markzuck
用户名是可选的,因为如果用户名为空,此端点将返回经过身份验证的用户配置文件
规则集:
我不是最擅长正则表达式,但如果有以下/,我创建了一个需要/profile 的表达式,例如/profile/ 那么你需要有一个与(\w){1,15} 匹配的<username>。另外,如果/ 后面还有另一个,我希望它可以匹配任意数量的组合,例如/profile/<username>/<if preceding "/" then anything else>
虽然我不能 100% 确定我的表达是否正确,但这似乎适用于 JavaScript/^\/(profile)(\/(?=(\w){1,15}))?/
虽然 Gorilla Mux 不同,但它要求路由匹配字符串始终以斜杠和其他一些我不明白的东西开头,比如它只能使用非捕获组
(通过收到此错误发现这一点:panic: route /{_dummy:profile/([a-zA-Z_])?} 在其正则表达式中包含捕获组。只接受非捕获组:例如 (?:pattern)而不是(模式))
我尝试使用与 JavaScript 相同的表达式,但在这里不起作用。我创建了一个更宽容的表达式handlerFunc("/{_dummy:profile\/[a-zA-Z_].*}"),它确实有效,但这并不真正遵循我在我的 JavaScript 表达式中使用的相同规则集。
我能够从这篇 SO 帖子 here
中提出我的工作表达
Gorilla Mux 的文档在介绍部分 here
我的问题是,与我描述的规则集相似或等效的表达式在 Gorilla Mux HandlerFunc() 中有效吗?
【问题讨论】: