6

如果我将 JSON 数据发布到 gofiber 中的 /post 路由,我将如何读取和更改这些值:

{
    "name" : "John Wick"
    "email" : "johnw@gmail.com"
}
app.Post("/post", func(c *fiber.Ctx) error {
    //read the req.body here
    name := req.body.name
    return c.SendString(name)
}
4

2 回答 2

11

您可以使用BodyParser

app.Post("/post", func(c *fiber.Ctx) error {
    payload := struct {
        Name  string `json:"name"`
        Email string `json:"email"`
    }{}

    if err := c.BodyParser(&payload); err != nil {
        return err
    }

    return c.JSON(payload)
}
于 2021-04-17T21:37:03.287 回答
3

1-假设名称和电子邮件是给用户的,所以首先创建一个用户结构:

type User struct {
        Name string `json: "email"`
    Email string `json: "email"`    
}

2-在您看来,您可以像这样得到它:

app.Post("/post", func(c *fiber.Ctx) error {
    user := new(User)

    if err := ctx.BodyParser(user); err != nil {
      fmt.Println("error = ",err)
      return ctx.SendStatus(200)
    }
    
    // getting user if no error
    fmt.Println("user = ", user)
    fmt.Println("user = ", user.Name)
    fmt.Println("user = ", user.Email)
  
    return c.SendString(user.Name)
}

于 2021-01-07T09:41:24.627 回答