我正在将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/ 也会被执行。这就是我想要避免的。
我想我需要在管理处理程序中围绕它进行编码 - 简单,但没有它工作时那么漂亮。
- 2 回答
- 0 关注
- 250 浏览
添加回答
举报
0/150
提交
取消