1
0
mirror of https://github.com/astaxie/beego.git synced 2025-07-11 16:41:01 +00:00

add GetFIle & enhance router

This commit is contained in:
astaxie
2013-04-09 23:33:48 +08:00
parent f9e8b4f124
commit 2f02653b7d
2 changed files with 32 additions and 3 deletions

View File

@ -41,17 +41,43 @@ func (p *ControllerRegistor) Add(pattern string, c ControllerInterface) {
params := make(map[int]string)
for i, part := range parts {
if strings.HasPrefix(part, ":") {
expr := "([^/]+)"
expr := "(.+)"
//a user may choose to override the defult expression
// similar to expressjs: /user/:id([0-9]+)
if index := strings.Index(part, "("); index != -1 {
expr = part[index:]
part = part[:index]
//match /user/:id:int ([0-9]+)
//match /post/:username:word ([\w]+)
} else if lindex := strings.LastIndex(part, ":"); lindex != 0 {
switch part[lindex:] {
case "int":
expr = "([0-9]+)"
part = part[:index]
case "word":
expr = `([\w]+)`
part = part[:index]
}
}
params[j] = part
parts[i] = expr
j++
}
if strings.HasPrefix(part, "*") {
expr := "(.+)"
if part == "*.*" {
params[j] = ":path"
parts[j] = "([^.]+)."
j++
params[j] = ":ext"
parts[j] = "([^.]+)"
j++
} else {
params[j] = ":splat"
parts[i] = expr
j++
}
}
}
if j == 0 {
//now create the Route
@ -79,10 +105,8 @@ func (p *ControllerRegistor) Add(pattern string, c ControllerInterface) {
route.params = params
route.pattern = pattern
route.controllerType = t
p.routers = append(p.routers, route)
}
}
func (p *ControllerRegistor) AddHandler(pattern string, c http.Handler) {