go-zero是快速的web和rpc微服务框架,并且可以根据go-ctl和自定义的api文件一键生成代码
一、前期准备
设置MODULE配置
go mod 相当于是属于golang的包管理工具,所以一定要先配置好
# 查看module的开启状态
go env GO111MODULE
# 设置
go env -w GO111MODULE="on"
# 设置proxy,下载包的时候就不会慢
go env -w GOPROXY=http://goproxy.cn,direct
安装go-ctl
goctl是go-zero微服务框架下的代码生成工具
# 查看go-ctl版本
goctl -v
# 安装go-ctl命令
## go 1.15及之前版本
go get -u github.com/zeromicro/go-zero/tools/goctl@latest
## go 1.16及以后版本
go install github.com/zeromicro/go-zero/tools/goctl@latest
二、正式部署
创建项目
当前的计划是将鉴权这一部分的功能单独做一个微服务,所以需要在api目录下再创建一层auth,之后所有鉴权相关的接口都会放在里面。
# 创建项目目录
mkdir app/api/auth
# 初始化项目目录
go mod init authapi
# 使用go-ctl创建代码模板
goctl api new authapi
# 包依赖的下载
go mod tidy
项目目录
auth
├─api
│ ├─etc 项目目录
│ │ └─auth-api.yaml 项目端口等配置信息
│ ├─internal 接口
│ │ ├─config 配置文件目录
│ │ │ └─config.go 配置文件
│ │ ├─handler 路由
│ │ │ ├─authhandler.go 控制层
│ │ │ └─routes.go 路由文件
│ │ ├─logic 逻辑层
│ │ │ └─authlogic.go 逻辑文件
│ │ ├─svc 自定义上下文
│ │ │ └─servicecontext.go 可声明定义(mysql、redis等实例)
│ │ ├─types 类型文件
│ │ │ └─types.go 输入输出结构体定义
│ ├─auth.api goctl根据api文件生成代码
└─└─auth.go 项目启动文件
Tips:api文件的编写可参考go-zero官网
至此,前端和后端的框架已经部署完成,后面的章节正式开始写代码,第一步会开始编写权限认证的后端代码