环境搭建
- Golang 环境安装 👉 golang
- Go Module设置
go env -w GO111MODULE="on" - goctl安装 👉 goctl
- protoc & protoc-gen-go安装
goctl env check -i -f --verbose
etcd,redis,mysql 等开发工具可以通过Docker 快速搭建;可参考👉 gonivinck
创建单体应用
1、创建目录
mkdir user-login
cd user-login
go mod init user-login
2、编辑api文件 userlogin.api
type (
RegisterRequest {
Name string `json:"name"`
Email string `json:"email"`
Password string `json:"password"`
}
RegisterResponse {
ID int `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
}
LoginRequest {
Email string `json:"email"`
Password string `json:"password"`
}
LoginResponse {
Token string `json:"token"`
Expire int64 `json:"expire"`
}
)
service userlogin-api {
@handler RegisterHandler
post /api/register(RegisterRequest) returns (RegisterResponse);
@handler LoginHandler
post /api/login(LoginRequest) returns (LoginResponse);
}
3、执行生成代码命令
goctl api go -api userlogin.api -dir .
go mod tidy
生成文件目录
userlogin
├─etc // // 配置文件
├─internal
│ ├─config // 配置声明type
│ ├─handler // 路由及handler转发
│ ├─logic // 业务逻辑
│ ├─svc // logic所依赖的资源池
│ └─types // request、response的struct,根据api自动生成
4、编辑配置文件 userlogin/etc/userlogin-api.yaml
Name: userlogin-api
Host: 0.0.0.0
Port: 8888
Mysql:
DataSource: root:123456@tcp(mysql:3306)/user?charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai
CacheRedis:
- Host: redis:6379
Type: node
Salt: DWe7OZf6KPlnv7yy
Auth:
AccessSecret: uOvKLmVfztaXGpNYd4Z0I1SiT7MweJhl
AccessExpire: 86400
添加config声明 userlogin/internal/config/config.go
其中Salt 用来密码加密存储,Auth 用于 jwt鉴权
type Config struct {
rest.RestConf
Mysql struct {
DataSource string
}
CacheRedis cache.CacheConf
Salt string
Auth struct {
AccessSecret string
AccessExpire int64
}
}
4、生成Model文件
添加用户表 userlogin/model/user.sql
CREATE TABLE `user` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT '' COMMENT '用户姓名',
`email` varchar

本文详细介绍了如何在Go环境下搭建Web应用,包括环境安装、配置管理、API定义、模型生成、业务逻辑实现以及JWT鉴权的运用。通过实例展示了用户注册和登录功能的实现,并提供了测试步骤,帮助读者理解Go语言开发Web服务的流程。
最低0.47元/天 解锁文章
3503





