为了账号安全,请及时绑定邮箱和手机立即绑定

Gorilla Mux 正则表达式

Gorilla Mux 正则表达式

Go
温温酱 2021-09-21 15:06:45
我正在将Golang Gorilla Toolkit 中的 Mux 包用于我的路线。考虑以下路线:m.HandleFunc("/admin/install", installHandler).Methods("GET")m.HandleFunc("/admin/^((?!install).)*$", adminHandler).Methods("GET")m.HandleFunc("/admin", adminHandler).Methods("GET")问题在于中间路线的正则表达式 - 它没有被解释,所以路线将不起作用!m.HandleFunc("/admin/{^((?!install).)*$}", adminHandler).Methods("GET")使用 {} 大括号也不起作用。它只是被忽略,并被视为 /admin/也没有:m.HandleFunc("/admin/{_dummy:^((?!install).)*$}", adminHandler).Methods("GET")简而言之,我在这里试图实现的是首先匹配 /admin/install 路由,然后我想使用正则表达式从下面的路由中排除那个确切的路由,但它不起作用。有什么方法可以在 gorilla mux 包中使用正则表达式吗?
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

它不起作用,因为 golang regexp 遵循re2 语法,它不支持前瞻或后视。

您可能需要为/admin/install first定义一个处理程序。
然后所有其他人/admin/xxx将用于其他路线(即不是/admin/install

实际上,OP SK84在评论中添加了:

即使首先定义了 admin/install,/admin/ 也会被执行。这就是我想要避免的。

我想我需要在管理处理程序中围绕它进行编码 - 简单,但没有它工作时那么漂亮。


查看完整回答
反对 回复 2021-09-21
  • 2 回答
  • 0 关注
  • 250 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信