4.gin-gorm用户模块接口
2023-02-13 00:00:04
技术
通过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编辑、删除用户" %}
用户模块-增、查
新增用户
在model/User.go中编写,或者新建service层文件也可以
// 查询用户是否存在
func CheckUser(name string) (code int) {
var users User
//查询使用该用户名的 id
db.Select("id").Where("username =?", name).First(&users)
//存在使用该用户名的 id
if users.ID > 0 {
return errmsg.ERROR_USERNAME_USED //1001
}
return errmsg.SUCCESS //200
}
// 新增用户 返回状态码
func CreateUser(data *User) int {
err := db.Create(&data).Error
if err != nil {
return errmsg.ERROR //500
}
return errmsg.SUCCESS //200
}
在api/v1/user.go接口文件中补全添加用户AddUser的代码
// 添加用户
func AddUser(ctx *gin.Context) {
var data model.User
_ = ctx.ShouldBindJSON(&data)
code = model.CheckUser(data.Username)
if code == errmsg.SUCCESS {
model.CreateUser(&data)
}
ctx.JSON(http.StatusOK, gin.H{
"status": code,
"data": data,
"message": errmsg.GetErrMsg(code),
})
}
在model中,我们写的是对数据库的操作以及操作的反馈 在api中,我们写的是执行操作的逻辑(操作执行的条件、顺序)以及返回给前端的信息
查询用户
model/User.go
// 查询用户列表 分页
func GetUsers(pageSize int, pageNum int) []User {
var users []User
err = db.Limit(pageSize).Offset((pageNum - 1) * pageSize).Find(&users).Error
if err != nil {
return nil
}
return users
}
api/v1/user.go
// 查询用户列表 分页
// 前端需要传递分页的设置信息给后端
func GetUsers(ctx *gin.Context) {
pageSize, _ := strconv.Atoi(ctx.Query("pagesize"))
pageNum, _ := strconv.Atoi(ctx.Query("pagenum"))
if pageSize == 0 {
pageSize = -1
}
if pageNum == 0 {
pageNum = -1
}
data := model.GetUsers(pageSize, pageNum)
code = errmsg.SUCCESS
ctx.JSON(http.StatusOK, gin.H{
"status": code,
"data": data,
"message": errmsg.GetErrMsg(code),
})
}
附加:接口测试
选择接口测试工具:postman、apipost等等
在地址栏输入访问调用函数的路由地址localhost:3000/api/v1/user/add
localhost:3000/api/v1/users
这些已经在router中定义好,localhost:3000是你定义的服务器地址端口,/api/v1是你定义的路由组入口,后面的是调用函数的路由及参数
以上两个功能为例,使用apipost为例:
添加用户测试:
选择POST方式,地址栏输入localhost:3000/api/v1/user/add 选择body-raw-json,输入User数据(json格式),点击发送
{
"username": "li8",
"password": "123456",
"role": 0,
}
可以看到响应信息
查询用户测试:
需要先添加多个用户
选择GET方式,地址栏输入localhost:3000/api/v1/users
选择query,填写参数pagesize、pagenum,点击发送,可以看到响应信息