好用的包和工具
# 比较好的工具包
- beego-validation (opens new window):本节采用的
beego
的表单验证库,中文文档 (opens new window)。 - com (opens new window),一个小而美的工具包。
# pkg/util/pagination.go
获取分页偏移量
package util
import (
"github.com/gin-gonic/gin"
"github.com/sword-demon/go-gin-example/pkg/setting"
"github.com/unknwon/com"
)
func GetPage(c *gin.Context) int {
result := 0
// 将获取到的 get 请求的 page 参数转换为 int 类型
page, _ := com.StrTo(c.Query("page")).Int()
if page > 0 {
result = (page - 1) * setting.PageSize
}
return result
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 错误码包
package e
const (
SUCCESS = 200
ERROR = 500
INVALID_PARAMS = 400
ERROR_EXIST_TAG = 10001
ERROR_NOT_EXIST_TAG = 10002
ERROR_NOT_EXIST_ARTICLE = 10003
ERROR_AUTH_CHECK_TOKEN_FAIL = 20001
ERROR_AUTH_CHECK_TOKEN_TIMEOUT = 20002
ERROR_AUTH_TOKEN = 20003
ERROR_AUTH = 20004
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package e
// MsgFlags 错误码对应错误消息
var MsgFlags = map[int]string{
SUCCESS: "ok",
ERROR: "fail",
INVALID_PARAMS: "请求参数错误",
ERROR_EXIST_TAG: "已存在该标签名称",
ERROR_NOT_EXIST_TAG: "该标签不存在",
ERROR_NOT_EXIST_ARTICLE: "该文章不存在",
ERROR_AUTH_CHECK_TOKEN_FAIL: "Token鉴权失败",
ERROR_AUTH_CHECK_TOKEN_TIMEOUT: "Token已超时",
ERROR_AUTH_TOKEN: "Token生成失败",
ERROR_AUTH: "Token错误",
}
// GetMsg 根据错误码获取错误消息,没有则返回fail
func GetMsg(code int) string {
msg, ok := MsgFlags[code]
if ok {
return msg
}
return MsgFlags[ERROR]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# gorm
回调方法
func (tag *Tag) BeforeCreate(scope *gorm.Scope) error {
err := scope.SetColumn("CreatedOn", time.Now().Unix())
if err != nil {
return err
}
return nil
}
func (tag *Tag) BeforeUpdate(scope *gorm.Scope) error {
err := scope.SetColumn("ModifiedOn", time.Now().Unix())
if err != nil {
return err
}
return nil
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# ini
配置
使用github.com/go-ini/ini
包
下载
go get -u https://github.com/go-ini/ini
1
编辑 (opens new window)
上次更新: 2022/05/31, 23:54:39