go web项目的分层 | 青训营笔记

629 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天

go web项目中的MVC分层架构

handler层

handler层也称为controller,主要任务为

  • 解析请求中的的参数(query、post)
  • 调用服务层,将参数传递给下一层的服务层
  • 将服务层返回的结果进行封装,添加上http状态码, 将数据返回给前端

service层

service包含主要的业务逻辑,用来完成各种业务,主要任务为

  • 检查handler层传来的参数是否合法(长度限制, 是否为空等)
  • 将参数传递给dao层,查询相应的数据
  • 将数据封装,返回给handler层

dao层

dao层主要完成对数据库中数据的增删改查,并将数据库中的关系封装到go中的struct

  • 根据service传过来的参数,对对应的表进行crud

示例

以用户登录为例共需要经过以下过程:

  1. 进入中间件SHAMiddleWare内的函数逻辑,得到password明文加密后再设置password。具体需要调用gin.Context的Set方法设置password。随后调用next()方法继续下层路由。
  2. 进入UserLoginHandler函数逻辑,获取username,并调用gin.Context的Get方法得到中间件设置的password。再调用service层的QueryUserLogin函数。
  3. 进入QueryUserLogin函数逻辑,执行三个过程:checkNum,prepareData,packData。也就是检查参数、准备数据、打包数据,准备数据的过程中会调用models层的UserLoginDAO。
  4. 进入UserLoginDAO的逻辑,执行最终的数据库请求过程,返回给上层。