为echo添加简单的binding 验证

本文详细介绍了如何在Gin框架中实现HTTP请求参数的绑定与验证,通过实例展示了如何使用gopkg.in/bluesuncorp/validator.v5包进行参数验证,并提供了遇到的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

echo 框架的binder 比较简单,只是做了json 和 xml 的验证,再深入下去就木有了。记得 echo 源码中 有 SetBinder接口,so,搞起

拿gin框架的binding 做参考,他是用的 gopkg.in/bluesuncorp/validator.v5 这个包,然后做对应的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.v8 最新版本



转载于:https://my.oschina.net/u/940352/blog/598641

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值