3.gin-gorm错误处理与路由接口

2023-02-13 00:00:03

技术


通过gin-gorm之项目学习部分的学习,可以对项目的架构有深入的了解 🤟 {% post_link "gin-gorm1项目准备初始化" %}
{% post_link "gin-gorm2数据库" %}
{% post_link "gin-gorm3错误处理与路由接口" %}
{% post_link "gin-gorm4用户模块接口编写" %}
{% post_link "gin-gorm5密码加密" %}
{% post_link "gin-gorm6编辑、删除用户" %}


错误处理

约定好状态码,便于错误处理,在utils下新建errmsg文件夹,在里面新建errmsg.go

const (
    SUCCESS = 200
    ERROR   = 500
    //约定状态码
    //code=1000...用户模块错误
    ERROR_USERNAME_USED  = 1001
    ERROR_PASSWORD_WRONG = 1002
    ERROR_USER_NOT_EXIST = 1003

    ERROR_TOKEN_NOT_EXIST = 1004
    ERROR_TOKEN_OUT_TIME  = 1005
    ERROR_TOKEN_WRONG     = 1006
    ERROR_TYPE_WRONG      = 1007

    //code=2000...文章模块错误

    //code=3000...分类模块错误
)

var codeMsg = map[int]string{
    SUCCESS:               "OK",
    ERROR:                 "FAIL",
    ERROR_USERNAME_USED:   "该用户名已存在",
    ERROR_PASSWORD_WRONG:  "密码错误",
    ERROR_USER_NOT_EXIST:  "用户不存在",
    ERROR_TOKEN_NOT_EXIST: "token不存在",
    ERROR_TOKEN_OUT_TIME:  "token已过期",
    ERROR_TOKEN_WRONG:     "token错误",
    ERROR_TYPE_WRONG:      " token格式错误",
}

func GetErrMsg(code int) string {
    return codeMsg[code]
}

路由接口

在api/v1创建控制数据模型的接口user.go、article.go、category.go,以及控制登录的接口login.go 以用户模块为例

//查询用户是否存在
func UserExist(ctx *gin.Context) {

}
//查询用户
//查询用户列表
func GetUsers(ctx *gin.Context) {

}
//添加用户
func AddUser(ctx *gin.Context) {

}
//编辑用户
func EditUser(ctx *gin.Context) {

}
//删除用户
func DeleteUser(ctx *gin.Context) {

}

在routes/router.go的v1路由组中创建路由接口,这种api为restful风格

router := r.Group("api/v1")
    {
        //Use用户模块路由接口
        router.POST("user/add", v1.AddUser)
        router.GET("users", v1.GetUsers)
        router.PUT("user/:id", v1.EditUser)
        router.DELETE("user/:id", v1.DeleteUser)

        //Category分类模块路由接口

        //Article文章模块路由接口
    }