diff --git a/router.go b/router.go index ff53da87..0ebdee4e 100644 --- a/router.go +++ b/router.go @@ -378,7 +378,7 @@ func (r *Router) Find(method, path string, c Context) { cn = child i, l := 0, len(search) - for ; i < l && search[i] != '/'; i++ { + for ; i < l && search[i] != '/' && search[i] != '.'; i++ { } pvalues[n] = search[:i] n++ diff --git a/router_test.go b/router_test.go index 3a8b2596..53906db7 100644 --- a/router_test.go +++ b/router_test.go @@ -784,6 +784,9 @@ func TestRouterParamNames(t *testing.T) { r.Add(GET, "/users/:id", func(c Context) error { return nil }) + r.Add(GET, "/companies/:id.json", func(c Context) error { + return nil + }) r.Add(GET, "/users/:uid/files/:fid", func(c Context) error { return nil }) @@ -799,6 +802,11 @@ func TestRouterParamNames(t *testing.T) { assert.Equal(t, "id", c.pnames[0]) assert.Equal(t, "1", c.Param("id")) + // Route -> /companies/:id.json + r.Find(GET, "/companies/1.json", c) + assert.Equal(t, "id", c.pnames[0]) + assert.Equal(t, "1", c.Param("id")) + // Route > /users/:uid/files/:fid r.Find(GET, "/users/1/files/1", c) assert.Equal(t, "uid", c.pnames[0])