diff --git a/app.go b/app.go index 823af3c..8e7fe8f 100644 --- a/app.go +++ b/app.go @@ -165,8 +165,9 @@ func (a *App) handleHTTPRequest(c *Ctx) { // Find route in tree value := root.getValue(rPath, c.params, c.skippedNodes, unescape) if value.params != nil { - c.Params = *value.params + c.params = value.params } + if value.handlers != nil { c.handlers = value.handlers c.fullPath = value.fullPath diff --git a/ctx.go b/ctx.go index 48b35f3..3c72be3 100644 --- a/ctx.go +++ b/ctx.go @@ -29,7 +29,7 @@ type Ctx struct { locals map[string]interface{} skippedNodes *[]skippedNode fullPath string - Params Params + //Params Params } func newContext(app *App, writer http.ResponseWriter, request *http.Request) *Ctx { @@ -144,7 +144,12 @@ func (c *Ctx) verify() error { } func (c *Ctx) Param(key string) string { - return c.Params.ByName(key) + return c.params.ByName(key) +} + +func (c *Ctx) SetParam(key, value string) { + params := append(*c.params, Param{Key: key, Value: value}) + c.params = ¶ms } func (c *Ctx) Form(key string) string { diff --git a/xtest/basic/main.go b/xtest/basic/main.go index db513a5..2e7c2b3 100644 --- a/xtest/basic/main.go +++ b/xtest/basic/main.go @@ -13,8 +13,15 @@ func main() { }) api := app.Group("/api") - api.Get("/1", func(c *nf.Ctx) error { - return c.SendString("nice") + api.Use(func(c *nf.Ctx) error { + c.SetParam("age", "18") + return c.Next() + }) + + api.Get("/:name", func(c *nf.Ctx) error { + name := c.Param("name") + age := c.Param("age") + return c.SendString(name + "@" + age) }) log.Fatal(app.Run(":80"))