前提・実現したいこと
Go言語のGinフレームワークで標準のバリデーション機能を利用しています。
URIパラメーター一つに対して、故意に複数のエラーが出せるかどうかを試したのですが、
一つずつしか出力されないことが分かりましたので、複数出せる方法がないかを質問させていただきます。
ここではhttp://localhost:8080/test/:id
を対象とします。
発生している問題・エラーメッセージ
:id
には、「数字のみ、かつ最大3文字まで」というBind条件を定義しました。
Go
type hoge struct { ID string `uri:"id" binding:"numeric,max=3"` }
故意にエラーの発生する:id
を入力した場合のケースです。
(1) localhost:8080/test/1234a
を入れた場合のエラーレスポンス
numeric,max=3
の両方が引っかかるものと考えておりましたが、エラー一つしか返ってきませんでした。
JSON
{"msg":"Key: 'hoge.ID' Error:Field validation for 'ID' failed on the 'numeric' tag"}
該当のソースコード
Go
package main import "github.com/gin-gonic/gin" //idのパラメーターで、numericとmax=3の両方に引っかかるパラメータを入れたい type hoge struct { ID string `uri:"id" binding:"numeric,max=3"` } func main() { r := gin.Default() r.GET("test/:id", func(c *gin.Context) { var h hoge if err := c.ShouldBindUri(&h); err != nil { c.JSON(400, gin.H{"msg": err.Error()}) return } id := c.Param("id") c.JSON(200, gin.H{ "pong": id, }) }) r.Run(:8080) }
補足情報(FW/ツールのバージョンなど)
- Windows10
- Windows版Go 1.17.5 windows/amd64
- Gin 1.7.7
まだ回答がついていません
会員登録して回答してみよう