簡體   English   中英

將 rest api POST 請求從 json 轉換為 golang 中的表單數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM