乐趣区

关于后端:根据使用者反馈对开源项目-goginapi-新增两个功能

前言

依据使用者的反馈,对开源我的项目: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 的?
退出移动版