Skip to content

zukadong/errcode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

errcode

A Go web application library for error codes.


使用说明

导入项目模块

import "github.com/zukadong/errcode"

定义errCode文件

假设你需要支持en_USzh_CN两种语言,那么你就需要定义errcode-en_US.jsonerrcode-zh_CN.json,并存放在你自己的项目目录之下,例如在conf

  • 文件errcode-en_US.json:
{
  "errCodes": [
    {
      "code": 52001,
      "message": "Api Error Or Service Unavailable"
    },
    {
      "code": 52002,
      "message": "Request header[%v] missing error"
    }
  ]
}
  • 文件 errcode-zh_CN.json
{
  "errCodes": [
    {
      "code": 52001,
      "message": "接口错误或服务不可用"
    },
    {
      "code": 52002,
      "message": "请求头[%v]缺失错误"
    }
  ]
}

项目集成

初始化资源文件

const (
        zhCN = "zh-CN"
        enUS = "en-US"
)

var supportLans = []string{zhCN, enUS}
// init loading errcode
for _, lan := range supportLans {
    filename := fmt.Sprintf("conf/errcode_%s.json", lan)
    if err := errcode.TryLoadErrCodeConfig(lan, filename); err != nil {
        panic(fmt.Sprintf("init errcode file [%s] failed, error %v", filename, err))
    }
}

业务代码调用

language = zhCN
message := errcode.GetErrMessage(language, 10002, "world!")

message将根据请求头里面的Accept-Language不同产生不同的结果:

  • en-US: hello, world!
  • zh-CN: 你好, world!

匿名嵌入方式调用

type BaseController struct{
	// ...other fields
	errcode.Locale
}

func(b *BaseController) Prepare(){
	// ... setter language by http header
	b.Lan = b.Ctx.Request.Header.Get("Accept-Language")
}

type BusinessController struct{
	BaseController
}

func(b BusinessController)...(){
	...
	message := b.GetErrMessage(10001)
	...
}

message将根据请求头里面的Accept-Language产生不同的结果:

  • en-US: not found
  • zh-CN: 无法找到

总结

  • 首先需要提供不同语言环境下的资源文件,并对资源文件进行初始化
  • 创建你自己的基础控制器结构BaseController,并匿名包含errcode.Locale
  • 业务控制器匿名包含BaseController,调用相关方法获取错误码
  • 如果未找到相应键的对应值,则会输出键的原字符串

About

A Go web application library for error codes.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages