Go语言 Post API在数字文本中获取无效字符“-”

nhaq1z21  于 2023-05-11  发布在  Go
关注(0)|答案(4)|浏览(144)

我正在尝试使用go创建一个POST函数来在数据库中插入数据。

我的型号:

type Funcstruct {
    Name      string `json:"Name"`
    Status    string `json:"Status"`
}

我的发布功能:

//POST FUNC
func (app *App) createFunc(w http.ResponseWriter, r *http.Request) {

    decoder := json.NewDecoder(r.Body)

    var data Func
    err := decoder.Decode(&data)
    if err != nil {
        panic(err)
    }

    Name := data.Name
    Status := data.Status

    database, err := db.CreateDatabase()
    if err != nil {
        log.Fatal("Not connect to db")
    }
    _, err = database.Exec("INSERT INTO `func` (Name, Status) VALUES ($1, $2)", Name, Status)
    if err != nil {
        log.Fatal("Error inserting data")
    }

    log.Println("Alright!")
    w.WriteHeader(http.StatusOK)
}

所以我创建了一个go build,然后创建了一个./nameproject
所以,我进入PostMan并发出一个post http请求,在form-data中传递Name和Status,但我收到:
2019/07/12 22:20:38 http:panic serving [::1]:54600:数字文本中的字符“-”无效

wmomyfyw

wmomyfyw1#

我在Postman中使用表单数据时也遇到了同样的问题,我最终决定使用JSON,并且成功了

rqmkfv5c

rqmkfv5c2#

您应该将form-data更改为raw->JSON并发送如下内容:

{
    "Name" : "morefeizi",
    "Status" : "1"
}
xjreopfe

xjreopfe3#

我在postman中使用multipart/form-data时遇到了同样的问题。最后我解决了。
我用的是gin-gonic,但我认为这是同一个问题。
我的代码之前

type XXXReq struct {
    FiledA string `form:"file_a"`
}
var req XXXReq
if err := ctx.ShouldBindJSON(&req); err != nil {
    DOSOMETHING
}

我的代码之后

type XXXReq struct {
    FiledA string `form:"file_a"`
}
var req XXXReq
if err := ctx.ShouldBind(&req); err != nil {
    DOSOMETHING
}

所以,也许你不应该使用decoder := json.NewDecoder(r.Body)来解析数据。

zpqajqem

zpqajqem4#

将JSON数据从PostMan发送到解组

相关问题