基于go-micro微服务的实战-实现用户服务的注册和登录(四)
文章最后附带完整代码
基于go-micro实现用户服务实的注册和登录
工程目录上,每个往后的小节都是基于前一个小节的基础,环环相扣。所以这节就是基于第3节的工程目录扩展。
这节主要就是如何去实现用户的注册和登录,依赖的第三方库的相关使用以及业务逻辑。
第三方库
gorm.io/gormgithub.com/astaxie/beego/validation
第一步:编写proto文件,新增grpc接口,编译生成
在user.proto上继续新增接口和对应参数内容
service UserService{
rpc UserReg(RegReq) returns(RegResp){}
rpc UserLogin(LoginReq) returns(LoginResp){}
}
message RegReq{
string name = 1;
string phone =2;
string email =3;
string pwd = 4;
string confir_pwd = 5;
}
message RegResp{
int32 status = 1;
string msg = 2;
}
message LoginReq{
string phone =1;
string pwd = 2;
}
message LoginResp{
int32 status = 1;
string user_id = 2;
string msg = 3;
}
执行pb.bat或者pb.sh快速编译生成,grpc_gateway和grpc_user的proto都要同步添加和执行
第二步:新增user数据表和对应结构体定义
创建用户表,sql语句在user.sql
CREATE TABLE `user` (
`user_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户id',
`name` varchar(50) NOT NULL COMMENT '名字',
`phone` varchar(50) NOT NULL COMMENT '手机号',
`pwd` varchar(50) NOT NULL COMMENT '密码',
`reg_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '注册时间',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8 COMMENT='用户表';
user结构体定义,在models下新建user_model.go。其中的tag标识中,
gorm:"column:user_id;primaryKey",代表指定user_id为主键,并且User.Id对应的是user_id字段。gorm:"-",代表写入db时候忽略该字段,gorm的语法规则valid:"Required;MinSize(4);MaxSize(12)",valid标识的则是使用beego的validtion验证规则。
//用户
type User struct {
Id int32 `gorm:"column:user_id;primaryKey"`
Name string `valid:"Required;MinSize(4);MaxSize(12)"`
Phone string `valid:"Mobile;Required"`
Email string `valid:"Email;MaxSize(50)"`
Pwd string `valid:"Required;MinSize(4);MaxSize(6)"`
ConfirePwd string `gorm:"-" valid:"Required;MinSize(4);MaxSize(6)"`
RegTime int64
}
第三步:用户服务的逻辑处理器实现新增的注册和登录接口
注册接口
func (u *UserHandler) UserReg(ctx context.Context, req *pb.RegReq, resp *pb.RegResp) error
请求数据的基础验证,使用github.com/astaxie/beego/validation验证非空,手机号,邮箱格式等等
user := models.User{
Name: req.Name,
Phone: req.Phone,
Email

本文介绍如何使用Go微服务框架go-micro实现用户服务的注册与登录功能,包括编写proto文件、数据库表设计、业务逻辑处理及网关路由设置。
最低0.47元/天 解锁文章
624

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



