<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                > web中經常會用到參數綁定以及表單自動驗證功能,可以節約大量的重復勞動以及提高可維護性 [TOC] ## 示例代碼 ~~~ package main import ( "net/http" "time" "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/binding" "github.com/go-playground/validator/v10" ) // User 中包含了綁定的表單請求字段和驗證規則 type User struct { Username string `form:"username" binding:"required,NameValid"` Password string `form:"password" binding:"required,gt=5,lt=10"` } // 自定義驗證器 var NameValid validator.Func = func(fl validator.FieldLevel) bool { s, ok := fl.Field().Interface().(string) if ok { if s == "admin" { return false } } return true } func TestValidate(c *gin.Context) { var user User if err := c.ShouldBindWith(&user, binding.Query); err == nil { c.JSON(http.StatusOK, gin.H{"message": "通過校驗!", "username": user.Username}) } else { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) } } func main() { route := gin.Default() // 注冊新的自定義驗證規則 if v, ok := binding.Validator.Engine().(*validator.Validate); ok { if err := v.RegisterValidation("NameValid", NameValid); err != nil { panic("-----> validate[NameValid] binding failed") } } // 訪問地址:http://localhost:8080/TestValidate?username=admin&password=123 route.GET("/TestValidate", TestValidate) route.Run(":8080") } ~~~ > 訪問 http://localhost:8080/TestValidate?username=admin&password=123 進行測試 ## 驗證規則 > 更多binding標簽參考:https://godoc.org/github.com/go-playground/validator 標簽 | 說明 ---|--- required| 必填 email| 驗證字符串是email格式;例:"email" url| 這將驗證字符串值包含有效的網址;例:"url" max| 字符串最大長度;例:"max=20" min| 字符串最小長度;例:"min=6" excludesall| 不能包含特殊字符;例:"excludesall=0x2C"//注意這里用十六進制表示 len| 字符長度必須等于n,或者數組、切片、map的len值為n,即包含的項目數;例:"len=6" eq| 數字等于n,或者或者數組、切片、map的len值為n,即包含的項目數;例:"eq=6" ne | 數字不等于n,或者或者數組、切片、map的len值不等于為n,即包含的項目數不為n,其和eq相反;例:"ne=6" gt| 數字大于n,或者或者數組、切片、map的len值大于n,即包含的項目數大于n;例:"gt=6" gte| 數字大于或等于n,或者或者數組、切片、map的len值大于或等于n,即包含的項目數大于或等于n;例:"gte=6" lt| 數字小于n,或者或者數組、切片、map的len值小于n,即包含的項目數小于n;例:"lt=6" lte|數字小于或等于n,或者或者數組、切片、map的len值小于或等于n,即包含的項目數小于或等于n;例:"lte=6" ## 跨字段驗證 標簽 | 說明 ---|--- eqfield=Field|必須等于 Field 的值 nefield=Field| 必須不等于 Field 的值 gtfield=Field| 必須大于 Field 的值 gtefield=Field| 必須大于等于 Field 的值 ltfield=Field| 必須小于 Field 的值 ltefield=Field| 必須小于等于 Field 的值 eqcsfield=Other.Field|必須等于 struct Other 中 Field 的值 necsfield=Other.Field|必須不等于 struct Other 中 Field 的值 gtcsfield=Other.Field |必須大于 struct Other 中 Field 的值 gtecsfield=Other.Field| 必須大于等于 struct Other 中 Field 的值 ltcsfield=Other.Field| 必須小于 struct Other 中 Field 的值 ltecsfield=Other.Field| 必須小于等于 struct Other 中 Field 的值
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看