mirror of
https://github.com/astaxie/beego.git
synced 2024-12-22 19:50:49 +00:00
fix #201
This commit is contained in:
parent
3c1d23bc62
commit
4ce584c5a6
10
router.go
10
router.go
@ -311,7 +311,6 @@ func (p *ControllerRegistor) ServeHTTP(rw http.ResponseWriter, r *http.Request)
|
||||
|
||||
params := make(map[string]string)
|
||||
|
||||
context.Input.Param = params
|
||||
if p.enableFilter {
|
||||
if l, ok := p.filters["BeforRouter"]; ok {
|
||||
for _, filterR := range l {
|
||||
@ -412,6 +411,7 @@ func (p *ControllerRegistor) ServeHTTP(rw http.ResponseWriter, r *http.Request)
|
||||
break
|
||||
}
|
||||
}
|
||||
context.Input.Param = params
|
||||
|
||||
if runrouter != nil {
|
||||
if r.Method == "POST" {
|
||||
@ -584,6 +584,14 @@ func (p *ControllerRegistor) ServeHTTP(rw http.ResponseWriter, r *http.Request)
|
||||
|
||||
if p.enableAuto {
|
||||
if !findrouter {
|
||||
lastindex := strings.LastIndex(requestPath, "/")
|
||||
lastsub := requestPath[lastindex+1:]
|
||||
if subindex := strings.LastIndex(lastsub, "."); subindex != -1 {
|
||||
context.Input.Param[":ext"] = lastsub[subindex+1:]
|
||||
r.URL.Query().Add(":ext", lastsub[subindex+1:])
|
||||
r.URL.RawQuery = r.URL.Query().Encode()
|
||||
requestPath = requestPath[:len(requestPath)-len(lastsub[subindex:])]
|
||||
}
|
||||
for cName, methodmap := range p.autoRouter {
|
||||
|
||||
if strings.ToLower(requestPath) == "/"+cName {
|
||||
|
@ -21,6 +21,10 @@ func (this *TestController) List() {
|
||||
this.Ctx.Output.Body([]byte("i am list"))
|
||||
}
|
||||
|
||||
func (this *TestController) Myext() {
|
||||
this.Ctx.Output.Body([]byte(this.Ctx.Input.Params(":ext")))
|
||||
}
|
||||
|
||||
func TestUserFunc(t *testing.T) {
|
||||
r, _ := http.NewRequest("GET", "/api/list", nil)
|
||||
w := httptest.NewRecorder()
|
||||
@ -45,6 +49,18 @@ func TestAutoFunc(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestAutoExtFunc(t *testing.T) {
|
||||
r, _ := http.NewRequest("GET", "/test/myext.json", nil)
|
||||
w := httptest.NewRecorder()
|
||||
|
||||
handler := NewControllerRegistor()
|
||||
handler.AddAuto(&TestController{})
|
||||
handler.ServeHTTP(w, r)
|
||||
if w.Body.String() != "json" {
|
||||
t.Errorf("user define func can't run")
|
||||
}
|
||||
}
|
||||
|
||||
func TestRouteOk(t *testing.T) {
|
||||
|
||||
r, _ := http.NewRequest("GET", "/person/anderson/thomas?learn=kungfu", nil)
|
||||
|
Loading…
Reference in New Issue
Block a user