简单的Dao层代码封装
创建dao/bbsDao.go文件,里面代码如下:
package dao
import (
"github.com/gin-gonic/gin"
)
//获取某一帖子详细
func GetBBSDetail(context *gin.Context) {
context.String(200, "获取id=%s的帖子", context.Param("id"))
}
//获取帖子列表
func GetBBSList(context *gin.Context) {
if context.Query("user") == "" {
context.String(200, "获取帖子列表")
} else {
context.String(200, "获取用户=%s的帖子", context.Query("user"))
}
}
看代码,应该一句明白了些什么:我们把处理路由的代码逻辑抽出来封装到了另外的函数中。
然后路由处就可以这样写了:
// /v1/bbs
routerV1.GET("", dao.GetBBSList)
// /v1/bbs/:id
routerV1.GET(":id", dao.GetBBSDetail)
gin路由使用中间件进行用户认证
比如添加帖子接口是需要用户登录的
/v1/bbs/addBBS
我们先在dao层dao/bbsDao.go中把添加帖子的逻辑代码写好:
//添加帖子
func AddBBS(context *gin.Context) {
context.String(200, "新增帖子成功")
}
给设置路由也很简单:
routerV1.POST("/addBBS",dao.AddBBS)
但是这还不行,我们这里要对这个接口进行用户认证啊。
怎么认证?使用中间件,所以上面应该这样写:
routerV1.Use(middleware.MustLogin())
{ //花括号表示代码块
routerV1.POST("/addBBS",dao.AddBBS) //这是一POST请求
}
routerV1.Use(middleware.MustLogin())
//表示routerV1路由组要使用middleware.MustLogin()这个中间件中的函数
下面我们就需要来看看MustLogin()了,其实也超简单(我们做的简单)
创建middleware/authMiddleware.go文件,在其中完成MustLogin()函数:
package middleware
import "github.com/gin-gonic/gin"
func MustLogin() gin.HandlerFunc {
return func(context *gin.Context) {
token, bool := context.GetQuery("token")
if bool == false || token != "xxx" {
context.String(401, "请登录")
context.Abort()
} else {
context.Next()
}
}
}
这里就是简单的通过有没有token参数来检查用户是否登录

本文介绍了如何在Gin框架中进行简单的Dao层代码封装,将处理路由的逻辑抽离到单独的函数。同时,通过使用中间件模拟用户认证,确保只有登录用户才能访问特定接口。在 Dao 层实现添加帖子的逻辑,并在路由配置中应用认证中间件,实现了对用户登录状态的检查。
1993

被折叠的 条评论
为什么被折叠?



