echoに簡単なbinding検証を追加
1276 ワード
echoフレームワークのbinderは比較的簡単で、jsonとxmlの検証をしただけで、さらに深く入ると木があります.echoソースコードにSetBinderインタフェースがあるのを覚えています.so、やります.
ginフレームのbindingを参考にして、彼はgopkgを使っています.in/bluesuncorp/validator.v 5このバッグ、そして対応するSTRUCT
OK、書き終わる、テストする、echoに埋め込む
POSTMANテストでは、post{"email":"hello email"}に検証エラー、email形式エラーが発生しました.
現在、自分が望む検証ライブラリを組み合わせることができ、個人的にgopkgを使用することを推奨する.in/go-playground/validator.v 8最新バージョン
ginフレームのbindingを参考にして、彼はgopkgを使っています.in/bluesuncorp/validator.v 5このバッグ、そして対応するSTRUCT
import (
"gin-gonic/gin/tree/master/binding"
"net/http"
)
type EchoBinder struct {
}
func (EchoBinder) Bind(r *http.Request, i interface{}) (err error) {
b := bining.Default(r.Method, r.Header.Get("Content-Type"))
err = b.Bind(r, i)
return
}
OK、書き終わる、テストする、echoに埋め込む
type User struct {
Email string `json:"email" binding:"required,email"`
Name string `json:"name" binding:"required"`
}
// Handler
func hello(c *echo.Context) error {
u := &User{}
err := c.Bind(u)
if err != nil{
return c.JSON(200, err.Error())
}
return c.JSON(200, u)
}
func main() {
// Echo instance
e := echo.New()
e.SetBinder(&binding.EchoBinder{})
// Middleware
e.Use(mw.Logger())
e.Use(mw.Recover())
// Routes
e.Any("/", hello)
// Start server
e.Run(":1234")
}
POSTMANテストでは、post{"email":"hello email"}に検証エラー、email形式エラーが発生しました.
現在、自分が望む検証ライブラリを組み合わせることができ、個人的にgopkgを使用することを推奨する.in/go-playground/validator.v 8最新バージョン