ginformvalidator

编程

validator.go

封装一个统一处理验证消息的文件

package goo

import (

"fmt"

"github.com/go-playground/validator"

"strings"

)

func ValidationMessage(err error, msgs map[string]string) string {

for _, i := range err.(validator.ValidationErrors) {

key := fmt.Sprintf("%s_%s", strings.ToLower(i.Field()), strings.ToLower(i.Tag()))

if msg, ok := msgs[key]; ok {

return msg

}

msg := fmt.Sprintf("%s %s", i.Field(), i.Tag())

return msg

}

return err.Error()

}

address.go

这是一个使用demo

type AddressDelete struct {

Id int64 `json:"id" binding:"required"`

}

func (this AddressDelete) DoHandle(c *gin.Context) {

if err := c.ShouldBind(&this); err != nil {

goo.Exception(40010, goo.ValidationMessage(err, map[string]string{

"id_required": "ID为空",

}))

}

if err := u_user_address.Delete(this.Id, nil); err != nil {

goo.Exception(40011, err.Error())

}

goo.Success(nil)

}

说明

  • gin框架自带了表单验证,使用的是validator.v8/9/10,
  • 基于此,我们封装了ValidationMessage()方法,统一转换form验证返回信息(因为validator.v8/9/10框架的自带返回信息不够友好)。

message定义规范

map[string]string{

"{field}_{tag}": "描述信息",

}

示例:

map[string]string{

"name_required": "名称 必填",

}

参考文档

https://godoc.org/gopkg.in/go-playground/validator.v8

以上是 ginformvalidator 的全部内容, 来源链接: utcz.com/z/518626.html

回到顶部