From 940e86bd8d00f3f0c35420aefd599be56663b53a Mon Sep 17 00:00:00 2001 From: zhaoyupeng Date: Tue, 27 Aug 2024 14:39:24 +0800 Subject: [PATCH] chore: update go module, readme --- readme.md | 135 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 85 insertions(+), 50 deletions(-) diff --git a/readme.md b/readme.md index 09fbd07..6f9a964 100644 --- a/readme.md +++ b/readme.md @@ -5,63 +5,98 @@ ##### basic usage - get param -```go -func main() { - app := nf.New() - app.Get("/hello/:name", func(c *nf.Ctx) error { - name := c.Param("name") - return c.JSON(nf.Map{"status": 200, "data": "hello, " + name}) - }) + ```go + func main() { + app := nf.New() - log.Fatal(app.Run("0.0.0.0:80")) -} -``` + app.Get("/hello/:name", func(c *nf.Ctx) error { + name := c.Param("name") + return c.JSON(nf.Map{"status": 200, "data": "hello, " + name}) + }) + + log.Fatal(app.Run("0.0.0.0:80")) + } + ``` - parse request query -```go -func handleQuery(c *nf.Ctx) error { - type Req struct { - Name string `query:"name"` - Addr []string `query:"addr"` - } - var ( - err error - req = Req{} - ) + ```go + func handleQuery(c *nf.Ctx) error { + type Req struct { + Name string `query:"name"` + Addr []string `query:"addr"` + } - if err = c.QueryParser(&req); err != nil { - return nf.NewNFError(400, err.Error()) - } + var ( + err error + req = Req{} + ) - return c.JSON(nf.Map{"query": req}) -} -``` + if err = c.QueryParser(&req); err != nil { + return nf.NewNFError(400, err.Error()) + } + + return c.JSON(nf.Map{"query": req}) + } + ``` - parse application/json body -```go -func handlePost(c *nf.Ctx) error { - type Req struct { - Name string `json:"name"` - Addr []string `json:"addr"` - } - var ( - err error - req = Req{} - reqMap = make(map[string]interface{}) - ) - - if err = c.BodyParser(&req); err != nil { - return nf.NewNFError(400, err.Error()) - } - - // can parse body multi times - if err = c.BodyParser(&reqMap); err != nil { - return nf.NewNFError(400, err.Error()) - } - - return c.JSON(nf.Map{"struct": req, "map": reqMap}) -} -``` \ No newline at end of file + ```go + func handlePost(c *nf.Ctx) error { + type Req struct { + Name string `json:"name"` + Addr []string `json:"addr"` + } + + var ( + err error + req = Req{} + reqMap = make(map[string]interface{}) + ) + + if err = c.BodyParser(&req); err != nil { + return nf.NewNFError(400, err.Error()) + } + + // can parse body multi times + if err = c.BodyParser(&reqMap); err != nil { + return nf.NewNFError(400, err.Error()) + } + + return c.JSON(nf.Map{"struct": req, "map": reqMap}) + } + ``` + +- pass local value + + ```go + type User struct { + Id int + Username string + } + + func main() { + app := nf.New() + app.Use(auth()) + + app.Get("/item/list", list) + } + + func auth() nf.HandlerFunc { + return func(c *nf.Ctx) error { + c.Locals("user", &User{Id: 1, Username:"user"}) + return c.Next() + } + } + + func list(c *nf.Ctx) error { + user, ok := c.Locals("user").(*User) + if !ok { + return c.Status(401).SendString("login required") + } + + ... + } + ```