bluebell 构建思路

建构思路

用户注册

首先创建项目,先创建好几个基本的文件夹,如routers、controller、logic、models、dao。在根目录创建main.go文件。

把路由先搭建起来,在routers文件夹中创建routers.go,新建函数func SetupRouter(mode string) *gin.Engine ,简简单单初始化一下路由。

在models文件夹下新建user.go,定义用户和注册表单结构体User和RegisterForm。

现在开始从controller开始补充函数,居然使用了zap和validator,去github学习一下

简单学习完了,现在发现博主自定义了很多状态码,打算照着抄一下,接着补全controller中response.go的代码

为什么返回 200 OK 即使有错误: 这里即便出现错误,HTTP 状态码仍然返回 200,这是因为开发者选择使用应用层的 MyCode 来表达业务逻辑错误。HTTP 状态码只表示 HTTP 请求的传输是否成功,具体的业务状态通过 ResponseData 结构体中的 Code 字段来传递。

  • 例子: 前端请求参数错误,虽然 HTTP 状态码是 200(请求传输成功),但 Code 会是类似于 400 这样的业务逻辑错误码,用来表明请求有问题。
1
2
3
4
5
6
7
8
9
10
// ResponseErrorWithMsg 携带数据响应错误
func ResponseErrorWithMsg(ctx *gin.Context, code MyCode, data interface{}) {
rd := &ResonseData{
Code: code,
Message: code.Msg(),
Data: data,
//Data: nil,?不确定
}
ctx.JSON(http.StatusOK, rd)
}

整removeTopStruct时候,发现有翻译器这种神奇的玩意,当 validator 进行校验时,生成的错误信息会通过翻译器 trans 转换为相应的语言。研究了一些自定义。

写好了注册用户的controller,接下来进入logic和dao。logic很好写,接下来进入sqlx,sqlx抄的很快。

原来网站能不能docker跑起来呢??改了compose配置后好像部分可行了。

logger虽然没有自己写,直接照搬的原来的文件。后续再看

用户登陆


bluebell 构建思路
http://willxu0313.github.io/2025/01/22/gin-backend/建构思路/
作者
Will
发布于
2025年1月22日
许可协议