[gogf/gf]路由匹配规则

2024-06-25 984 views
0
/{hash}.json
/{hash}

/{hash}的优先级高于/{hash}.json ,这个顺序有点问题。

现在只能改变字段名称让/{hash}.json排前面,不过这样在控制器中就需要多做一次判断。

建议加入正则,

beego 的:hash([\w]+)

回答

7

@zuozhehao GF的路由采用的是深度优先匹配,越是精准的路由规则优先级越高,因此/{hash}.json的优先级高于/{hash}。复杂的路由,特别是包含正则表达式的路由,不仅效率低并且长远来看是不便于维护的,因此GF不提供复杂的正则匹配路由。现有的路由规则已经可以满足绝大多数的场景需求。

3

@gqcn 那产生bug 了,当前版本/{hash}优先级高于/{hash}.json

20200528-223900@2x
6

@zuozhehao 如果你访问/xxx.json将会匹配/{hash}.json这个规则;如果你访问/xxx将会匹配/{hash}这个规则,有什么问题吗?

2

@gqcn 那也就是 /{hash} 优先级也高于 /{hash}.{type} ?

3

你说的/{hash}优先级比/{hash}.json高的代码示例有吗,贴上来我看看呢?

6

嗯,我测试了下,/{hash}.json 优先级比/{hash} 高。 不过/{hash}/{hash}.{type} 优先级高。

7

@zuozhehao 确实这个细节没处理得特别好,我这里改进了一下,提交到了master分支,你可以试试,如果仍有建议非常欢迎继续提。