golang mux,路由通配符和自定义功能匹配
我正在使用
mux软件包似乎工作得很好,除了它似乎不支持复杂的路由或至少我不知道它是如何做的.
我有以下几条路线: router := mux.NewRouter() router.HandleFunc("/{productid}/{code}",product) router.HandleFunc("/{user}",userHome) router.HandleFunc("/search/price",searchPage) 所以我有两个问题: >如何定义/ search / price / *这样的通配符路由,以便/ search / price / 29923 / rage / 200 / color = red等请求可以匹配? 我试图添加像.MatcherFunc(myfunction(ip)bool)之类的东西到路线,但它抱怨路由器没有这样的方法. 目前我正处理处理程序内的“自定义”条件.
你可以使用regexp.就像是
router.HandleFunc(`/search/price/{rest:[a-zA-Z0-9=-/]+}`,searchPage) 这样,休息将捕获所有内容,所以在你的例子中,休息将是29923 / rage / 200 / color = red.您需要在代码中解析它. 不过,你可能想要一些像可选参数. router.HandleFunc(`/search{price:(/price/[0-9]+)?}{rage:(/rage/[0-9]+)?}{color:(/color=[a-z]+)?}`,searchPage) 在那之后,你得到vars price =“/ price / 29923”,rage =“/ rage / 200”和color =“/ color = red”,你仍然需要解析,但它更容易,你可以控制哪个参数有效.如果你跳过一些参数,它会按预期工作,例如. / search / price / 29923 / color = red只会给出一个空的rage变量,但仍然匹配. 我不太明白你的第二个问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |