简介
go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。
本节将用go-zero 开发一个用户服务;主要包括注册、登录、用户信息查询功能
初始化项目
//创建目录
madir project && cd project
//初始化项目
go mod init project
用户服务
0、环境准备
protoc & protoc-gen-go安装
protoc是一款用C++编写的工具,其可以将proto文件翻译为指定语言的代码。在go-zero的微服务中,我们采用grpc进行服务间的通信,而grpc的编写就需要用到protoc和翻译成go语言rpc stub代码的插件protoc-gen-go。
1、创建proto 文件 user/rpc/user.proto
syntax = "proto3";
package user;
option go_package = "./user";
message RegisterRequest {
string Name = 1;
int64 Gender = 2;
string Email = 3;
string Password = 4;
}
message RegisterResponse {
int64 Id = 1;
string Name = 2;
int64 Gender = 3;
string Email = 4;
}
message LoginRequest {
string Email = 1;
string Password = 2;
}
message LoginResponse {
int64 Id = 1;
string Name = 2;
int64 Gender = 3;
string Email = 4;
}
message UserInfoRequest {
int64 Id = 1;
}
message UserInfoResponse {
int64 Id = 1;
string Name = 2;
int64 Gender = 3;
string Email = 4;
}
service User {
rpc Register(RegisterRequest) returns(RegisterResponse);
rpc Login(LoginRequest) returns(LoginResponse);
rpc UserInfo(UserInfoRequest) returns(UserInfoResponse);
}
2、创建 user/generate.go
为了方便快速执行 goctl 相关命令,创建generate.go 文件 写入生成命令
package user
//Rpc
//go:generate goctl rpc protoc ./rpc/user.proto --go_out=./rpc/types --go-grpc_out=./rpc/types --zrpc_out=./rpc/
//go:generate goctl model mysql ddl -src ./model/user.sql -dir ./model -c
//go:generate goctl api go -api ./api/user.api -dir ./api
执行 goctl rpc protoc 命令生成代码;代码目录如下
──rpc
├─etc
├─internal
│ ├─config
│ ├─logic
│ ├─server
│ └─svc
├─types
│ └─user
└─user
3、创建model/user.sql 并执行 命令
goctl model mysql ddl -src ./model/user.sql -dir ./model -c
CREATE TABLE `user` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT '' COMMENT '用户姓名',
`gender` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '用户性别',
`email` varchar(255) NOT NULL DEFAULT '' COMMENT '用户邮箱',
`password` varchar(255) NOT

最低0.47元/天 解锁文章
998

被折叠的 条评论
为什么被折叠?



