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