go-zero 微服务框架学习笔记
大约 1 分钟
go-zero微服务框架学习笔记
学习资料
1.https://go-zero.dev/cn/docs/prepare/prepare
2.https://www.cnblogs.com/haima/p/16057786.html
一、goctl 安装
说明
goctl 是 go-zero 的一个命令行工具,可以用来生成基础代码
GOPROXY=https://goproxy.cn/,direct
go install github.com/zeromicro/go-zero/tools/goctl@latest
执行完毕后会在$GOPATH/bin里生成执行文件goctl.exe
二、goctl 使用
2.1 快速生成API服务
mkdir project
cd project
# 生成相关代码
goctl api new greet
go mod tidy
cd greet
# 启动服务
go run greet.go -f etc/greet-api.yaml
2.2 编写API代码
mkdir user
cd user
vim user.api
user.api内容
syntax = "v1"
info(
author: "user-api"
date: "2022-10-18"
desc: "api语法示例及语法说明"
)
type UserInfoReq {
UserId int64 `json:"userId"`
}
type UserInfoResp {
UserId int64 `json:"userId"`
Nickname string `json:"nickname"`
}
service user-api{
@doc "获取用户信息"
@handler userInfo
get /user/info (UserInfoReq) returns (UserInfoResp)
}
Goland 和 vscode 已经有 goctl 相关插件,下载后更方便
生成相关代码
# 使用模板生成
# --home $goctl_template_path 指定 goctl 模板文件
goctl api go -api user.api -dir . --home ../../.goctl
# 原始命令
# -api $api_file api 文件路径
# -dir $dir_output_path 输出目录
# --style 设置样式 goZero 表示驼峰 go_zero 表示蛇形
goctl api go -api user.api -dir . --style=goZero
3、生成代码分析
3.1 目录结构
├─etc
| └─user-api.yaml # 配置文件
└─internal
├─config
├─handler # 处理函数
├─logic # 业务逻辑(基本上只需要在这里写代码就行)
├─svc
└─types # 定义结构体
3.2 代码部分
go-zero通过定义api文件生成基础代码,api文件类似于protobuf
后面只需要在 logic 目录写业务逻辑即可
持续更新中..... ^ _ ^