0、索引
go-zero docker-compose 搭建课件服务(一):编写服务api和proto
go-zero docker-compose 搭建课件服务(二):编写courseware rpc服务
go-zero docker-compose 搭建课件服务(三):编写courseware api服务
go-zero docker-compose 搭建课件服务(四):生成Dockerfile并在docker-compose中启动
go-zero docker-compose 搭建课件服务(五):欠缺user服务
go-zero docker-compose 搭建课件服务(六):欠缺jwt鉴权和返回构造
go-zero docker-compose 搭建课件服务(七):prometheus+grafana服务监控
0.1源码地址
https://github.com/liuyuede123/go-zero-courseware
1、生成api相干文件
# 到之前创立的courseware/api目录下goctl api go -api courseware.api -dir . -style gozero
2、courseware/api/etc/user.yaml下减少rpc配置
Name: coursewareHost: 0.0.0.0Port: 8400CoursewareRpc: Etcd: Hosts: - etcd:2379 Key: courseware.rpc
3、courseware/api/internal/config/config.go下减少CoursewareRpc
package configimport ( "github.com/zeromicro/go-zero/rest" "github.com/zeromicro/go-zero/zrpc")type Config struct { rest.RestConf CoursewareRpc zrpc.RpcClientConf}
3、courseware/api/internal/svc/servicecontext.go下减少CoursewareRpc配置
package svcimport ( "github.com/zeromicro/go-zero/zrpc" "go-zero-courseware/courseware/api/internal/config" "go-zero-courseware/courseware/rpc/coursewareclient")type ServiceContext struct { Config config.Config CoursewareRpc coursewareclient.Courseware}func NewServiceContext(c config.Config) *ServiceContext { return &ServiceContext{ Config: c, CoursewareRpc: coursewareclient.NewCourseware(zrpc.MustNewClient(c.CoursewareRpc)), }}
4、补充增删改查相干接口逻辑
courseware/api/internal/logic/coursewareaddlogic.go
package logicimport ( "context" "go-zero-courseware/courseware/rpc/coursewareclient" "go-zero-courseware/courseware/api/internal/svc" "go-zero-courseware/courseware/api/internal/types" "github.com/zeromicro/go-zero/core/logx")type CoursewareAddLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext}func NewCoursewareAddLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CoursewareAddLogic { return &CoursewareAddLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, }}func (l *CoursewareAddLogic) CoursewareAdd(req *types.AddRequest) (resp *types.AddResponse, err error) { _, err = l.svcCtx.CoursewareRpc.Add(l.ctx, &coursewareclient.AddRequest{ Code: req.Code, Name: req.Name, Type: req.Type, }) if err != nil { return nil, err } return &types.AddResponse{}, nil}
courseware/api/internal/logic/coursewaredeletelogic.go
package logicimport ( "context" "go-zero-courseware/courseware/rpc/coursewareclient" "go-zero-courseware/courseware/api/internal/svc" "go-zero-courseware/courseware/api/internal/types" "github.com/zeromicro/go-zero/core/logx")type CoursewareDeleteLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext}func NewCoursewareDeleteLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CoursewareDeleteLogic { return &CoursewareDeleteLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, }}func (l *CoursewareDeleteLogic) CoursewareDelete(req *types.DeleteRequest) (resp *types.DeleteResponse, err error) { _, err = l.svcCtx.CoursewareRpc.Delete(l.ctx, &coursewareclient.DeleteRequest{ Id: req.Id, }) if err != nil { return nil, err } return &types.DeleteResponse{}, nil}
courseware/api/internal/logic/coursewaregetlogic.go
package logicimport ( "context" "go-zero-courseware/courseware/rpc/coursewareclient" "go-zero-courseware/courseware/api/internal/svc" "go-zero-courseware/courseware/api/internal/types" "github.com/zeromicro/go-zero/core/logx")type CoursewareGetLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext}func NewCoursewareGetLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CoursewareGetLogic { return &CoursewareGetLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, }}func (l *CoursewareGetLogic) CoursewareGet(req *types.GetRequest) (resp *types.GetResponse, err error) { cw, err := l.svcCtx.CoursewareRpc.Get(l.ctx, &coursewareclient.GetRequest{ Id: req.Id, }) if err != nil { return nil, err } return &types.GetResponse{ Id: cw.Id, Code: cw.Code, Name: cw.Name, Type: cw.Type, }, nil}
courseware/api/internal/logic/coursewareupdatelogic.go
package logicimport ( "context" "go-zero-courseware/courseware/rpc/coursewareclient" "go-zero-courseware/courseware/api/internal/svc" "go-zero-courseware/courseware/api/internal/types" "github.com/zeromicro/go-zero/core/logx")type CoursewareUpdateLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext}func NewCoursewareUpdateLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CoursewareUpdateLogic { return &CoursewareUpdateLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, }}func (l *CoursewareUpdateLogic) CoursewareUpdate(req *types.UpdateRequest) (resp *types.UpdateResponse, err error) { _, err = l.svcCtx.CoursewareRpc.Update(l.ctx, &coursewareclient.UpdateRequest{ Id: req.Id, Code: req.Code, Name: req.Name, Type: req.Type, }) if err != nil { return nil, err } return &types.UpdateResponse{}, nil