我想确保输入不包含子字符串“organization”、“forbidden”并且不等于“foo”和“bar”。
// cmd/httpd/handler/item_post.go
package handler
import (
"net/http"
"dummy-project/itemdata"
"github.com/gin-gonic/gin"
)
func ItemPost() gin.HandlerFunc {
return func(c *gin.Context) {
requestBody := itemdata.Item{}
if err := c.ShouldBindJSON(&requestBody); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"message": err.Error()})
return
}
// insert Item object to DB
c.JSON(http.StatusCreated, requestBody)
}
}
下面是我用于 POST 请求和插入数据库记录的结构: // itemdata/item_data.go package itemdata
// Item struct used for POST request and inserting new item
type Item struct {
ID string `bson:"_id" json:"id"`
Name string `bson:"name" json:"name" binding:"required,excludesrune=organizationforbidden,ne=foo,ne=bar"`
}
当我插入这些值时: foo -> 排除符文验证失败
bar -> ne 上的验证失败
组织 -> 排除符文验证失败
orgfor -> 排除符文验证失败
禁止 -> 排除符文验证失败
酒吧 -> 成功
我想要什么: foo -> 失败
酒吧->失败
组织 -> 失败
orgfor -> 成功,因为组织和禁止词不完整
禁止 -> 失败
BAR -> 失败
我如何使用 go gin 和 go 验证器来实现这一点?谢谢
MM们
相关分类