在golang中验证formvalue数据



我在post请求中获得的数据是表单数据,我想在将数据发送到数据库查询之前验证该数据。我怎么能那样做。

我可以看到,我可以通过绑定将验证器与json类型一起使用。

这是我的游戏结构:

type Game struct {
Id           string `json:"Id"`
Name         string `json:"Name" validate:"required"`
Rating       float32 `json:"Rating" `
TimesPlayed  int `json:"TimesPlayed" validate:"required, number"`
ImagePath    string `json:"ImagePath" validate:"required, file"`
Description  string `json:"Description"`
Developer    string `json:"Developer" validate:"required, min=5, max=20"`
CreationDate time.Time `json:"CreationDate"`
Version      string `json:"Version"`
Tags         []string `json:"Tags"`
Downloads    int64 `json:"Downloads" validate:"number"` // firestore doesn't support uint64
DownloadLink string `json:"DownloadLink" validate:"required, uri"`
}

我有formvalue,我想利用验证器来验证我的formvalue。

有关于我该怎么做的指南吗?

现在我正在做这个没有验证

func newGameHandler(c echo.Context) error {
// create new game model
// TODO need a security layer in between the form and our new game struct
newGame := models.Game{
Name:         c.FormValue(NAME),
Developer:    c.FormValue(DEVELOPER),
CreationDate: time.Now(),
Version:      c.FormValue(VERSION),
}

// Add new game to database
_db, getDbErr := db.NewDatabaseFromEnv()
_, err := _db.AddGame(newGame)
// error handling
if getDbErr != nil {
return c.JSON(http.StatusInternalServerError, "Database connection error")
}
if err != nil {
return c.JSON(http.StatusInternalServerError, "Database add game error")
}
// TODO return successful game add
return c.JSON(http.StatusOK, "New game handler")
}

如何对此添加验证?

这取决于您使用的框架,但我们有用于通用目的的Go验证器,也基于您正在使用的框架。您也可以使用他们的验证器,如echo验证器或gin验证器。

您也可以向它们添加自定义验证功能。

相关内容

  • 没有找到相关文章

最新更新