echoに簡単なbinding検証を追加

1276 ワード

echoフレームワークのbinderは比較的簡単で、jsonとxmlの検証をしただけで、さらに深く入ると木があります.echoソースコードにSetBinderインタフェースがあるのを覚えています.so、やります.
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最新バージョン