前言

依据使用者的反馈,对开源我的项目:go-gin-api 新增两个小性能。

两个小性能都与语言包无关:

  • 性能1:接口返回的错误信息反对中英文;
  • 性能2:参数验证的错误信息反对中英文;

我的实现形式是在我的项目装置的时候,抉择 语言,而后我的项目中依据抉择的语言进行输入对应的中英文,如下图。

接口返回的错误信息反对中英文

代码地位

我的项目代码地位:internal/pkg/code

应用形式

// 与原来应用形式统一code.Text(code.ServerError) 

错误信息自定义

  • 中文:internal/pkg/code/zh-cn.go
  • 英文:internal/pkg/code/en-us.go

如果你想新增/编辑错误信息,在对应文件操作即可。

参数验证的错误信息反对中英文

代码地位

我的项目代码地位:internal/pkg/validation

应用形式

req := new(createRequest)if err := ctx.ShouldBindForm(req); err != nil {    fmt.Println(validation.Error(err))}

错误信息语言包

错误信息语言包应用的是 go-playground/validator

  • 中文:v10/translations/zh
  • 英文:v10/translations/en

示例

Username string `form:"username" binding:"required"` // 用户名Nickname string `form:"nickname" binding:"required"` // 昵称

未应用语言包

// 错误信息createRequest.Username' Error:Field validation for 'Username' failed on the 'required' tag\nKey: 'createRequest.Nickname' Error:Field validation for 'Nickname' failed on the 'required' tag"

应用中文语言包

// 错误信息Username为必填字段;Nickname为必填字段;

应用英文语言包

// 错误信息Username is a required field;Nickname is a required field;

小结

以上,心愿能对你有所帮忙,代码已提交到 GitHub,下载最新代码用起来吧。

举荐浏览

  • 对于解决电商零碎订单状态的流转,分享下我的技术计划(附带源码)
  • 我是怎么写 Git Commit message 的?