Gorilla Mux 正则表达式

我正在将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 包中使用正则表达式吗?


温温酱
浏览 253回答 2
2回答

慕码人2483693

它不起作用,因为 golang regexp 遵循re2 语法,它不支持前瞻或后视。您可能需要为/admin/install first定义一个处理程序。然后所有其他人/admin/xxx将用于其他路线(即不是/admin/install)实际上,OP SK84在评论中添加了:即使首先定义了 admin/install,/admin/ 也会被执行。这就是我想要避免的。我想我需要在管理处理程序中围绕它进行编码 - 简单,但没有它工作时那么漂亮。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go