[英]API Gateway mapping template : Convert form-data(POST) request to JSON
[英]convert rest api POST request from json to form-data in golang
我有以下代碼適用於 POST 請求正文中的JSON
但我現在想將其轉換為在請求正文中使用form-data
這是我所擁有的
func Signin(c *fiber.Ctx) error {
var data map[string]string
if err := c.BodyParser(&data); err != nil {
return err
}
var user models.User
token, err := middlewares.GenerateJWT(user.Email)
if err != nil {
c.Status(fiber.StatusBadRequest)
return c.JSON(fiber.Map{
"message": "Invalid credentials",
})
}
cookie := fiber.Cookie{
Name: "access_token",
Value: token,
Expires: time.Now().Add(time.Hour * 24),
HTTPOnly: true,
Secure: true,
}
c.Cookie(&cookie)
return c.JSON(fiber.Map{
"access_token": token,
"token_type": "bearer",
})
}
以上適用於原始JSON
主體,但我想更改為form-data
主體
我已經嘗試了很多事情,包括這個但無濟於事
type SigninData struct {
email string `json:"email" xml:"email" form:"email"`
password string `json:"password" xml:"password" form:"password"`
}
func Signin(c *fiber.Ctx) error {
data := new(SigninData)
if err := c.BodyParser(&data); err != nil {
return err
}
var user models.User
token, err := middlewares.GenerateJWT(user.Email)
if err != nil {
c.Status(fiber.StatusBadRequest)
return c.JSON(fiber.Map{
"message": "Invalid credentials",
})
}
cookie := fiber.Cookie{
Name: "access_token",
Value: token,
Expires: time.Now().Add(time.Hour * 24),
HTTPOnly: true,
Secure: true,
}
c.Cookie(&cookie)
return c.JSON(fiber.Map{
"access_token": token,
"token_type": "bearer",
})
}
但我收到以下錯誤
schema: interface must be a pointer to struct
我錯過了什么,我需要修復它才能接受表單數據?
BodyParser
方法需要一個指向結構的指針作為參數,但您的代碼試圖將一個指向結構指針的指針傳遞給它。 請以這種方式初始化結構:
data := SigninData{}
另外,嘗試公開SigninData
結構的字段:
type SigninData struct {
Email string `json:"email" xml:"email" form:"email"`
Password string `json:"password" xml:"password" form:"password"`
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.