设为首页 加入收藏

TOP

go-zero docker-compose 搭建课件服务(三):编写courseware api服务(一)
2023-07-23 13:29:04 】 浏览:48
Tags:go-zero docker-compose 编写 courseware api 服务

0、转载

go-zero docker-compose 搭建课件服务(三):编写courseware api服务

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: courseware
Host: 0.0.0.0
Port: 8400

CoursewareRpc:
  Etcd:
    Hosts:
      - etcd:2379
    Key: courseware.rpc

3、courseware/api/internal/config/config.go下增加CoursewareRpc

package config

import (
	"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 svc

import (
	"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 logic

import (
	"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 logic

import (
	"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/lo

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇grpc的使用 下一篇Golang GMP原理(2)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目