gin的一个标准化返回工具

sleagon · · 834 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

大家在用gin的写服务的时候多多少少会遇到一些需要频繁处理响应的格式、错误、翻译的问题,这里给大家推荐一个非常干净高效的格式化工具。 **GINFMT**: [github地址](https://github.com/sleagon/ginfmt) 这玩意很简单,代码不超过200行,没有用任何反射,除了gin本身没有以来任何标准库的包,理论上可以兼容任何版本的gin。 它实现的功能如下: 1. 所有的响应都是格式化的code/message/data。 2. 所有的错误都按级别打印好了,可以自定义日志工具,可以自定义日志级别,所有错误具备错误栈。 3. 所有的错误都支持I18N翻译,支持自定义翻译工具。 4. 性能好,不以来反射和任何三方库。 下面是一个可以直接跑的例子: ```go package main import ( "fmt" "net/http" "github.com/gin-gonic/gin" "github.com/sleagon/ginfmt" "github.com/sleagon/ginfmt/errfmt" ) var ( BadRequest = errfmt.Register(http.StatusBadRequest, 10001, "Params is invalid") ) func main() { ginfmt.Init(nil, nil) r := gin.Default() r.Use(ginfmt.MW()) r.GET("/bad", func(c *gin.Context) { ginfmt.Error(c, BadRequest.Gen()) }) r.GET("/ping", func(c *gin.Context) { ginfmt.Data(c, "pong") }) r.GET("/bad_payload", func(c *gin.Context) { // do sth err := fmt.Errorf("this is not a valid phone num %w", BadRequest.Gen()) ginfmt.DataError(c, gin.H{"phone": "invalid", "email": "valid"}, err) }) r.Run() // listen and serve on 0.0.0.0:8080 } ```

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

834 次点击  
加入收藏 微博
上一篇:2020年终总结
下一篇:2020。
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传