1. `*` 被解析后的正则是 `(.+)` ,那是不是说明 '/*' 这样的路由 '/' 后必须跟至少一个字符?
2. '/*.*' 这样的设置被解析后的正则是 `/([^.]+).(.+)`,第二个 '.' 没有使用转义,测试了一下"/index.html"和"/indexhtml" 都是可以匹配的,该怎样设置排除掉后面那个路由呢?
可能我说的不是很清楚,我再详细描述一下
1. 我想让所有的请求都进入一个过滤器,过滤器设置的路由是`/*`, 我原本以为这样所有的请求都可以匹配到,但是 `/abc' 这样的可以,但是直接使用 `localhost:9090` 这样的方式却进不去,看了源代码才发现 `*` 是被解析成`(.+)`这样的正则,所以 `*` 的位置必须存在至少一个字符,也就是说我需要通过 `localhost:9090/a` 这样的方式才能进过滤器。
2. 如果路由设置成`/download/*.*` 这样的,那么 `/download/index.html` 和 `download/indexhtml` (index后没有英文句号)这样的都是可以匹配到的(这个路由我设置到过滤器上了,然后看是不是可以进入到过滤器来测试的),源码中`*.*` 这样的会被解析成 `([^.]+).(.+)`,第二个 `.` 没有转义,不就是代表任意字符了吗,所以和我预期的有点不一样。
#5
更多评论
1、应该不会,
`beego.Router(“/download/ceshi/*“, &controllers.RController{})`
`*`全匹配方式
//匹配 `/download/ceshi/file/api.json :splat=file/api.json
this.Ctx.Input.Param(":splat")` 应该是可以为空的,具体你测试一下不就知道了吗?
2、`beego.Router("/download/*.*", &controllers.RController{})` 这样应该可以吧
#1
1、应该不会,
beego.Router(“/download/ceshi/*“, &controllers.RController{})
`*`全匹配方式
// 匹配 `/download/ceshi/file/api.json :splat=file/api.json this.Ctx.Input.Param(":splat")` 应该是可以为空的,
具体你测试一下.
2、`beego.Router(“/download/*.*”, &controllers.RController{})`
这样应该可以吧
#2