go-zero docker-compose 搭建课件服务(一):编写服务api和proto
0、转载
go-zero docker-compose 搭建课件服务(一):编写服务api和proto
0.1源码地址
https://github.com/liuyuede123/go-zero-courseware
1、创建项目目录
mkdir go-zero-courseware
cd go-zero-courseware
2、安装goctl
# 安装
GOPROXY=https://goproxy.cn/,direct go install github.com/zeromicro/go-zero/tools/goctl@latest
# mac放到/usr/local/bin/下面
ln -s ~/go/bin/goctl /usr/local/bin/goctl
# 校验
goctl -v
goctl version 1.4.0 darwin/amd64 # 看到版本说明安装成功
3、创建服务
创建服务目录
mkdir -p user/api
mkdir -p user/rpc
mkdir -p courseware/api
mkdir -p courseware/rpc
创建user.api、courseware.api、user.proto、courseware.proto
touch user/api/user.api
touch user/rpc/user.proto
touch courseware/api/courseware.api
touch courseware/rpc/courseware.proto
4、编写user.api、user.proto
type (
	// 登录
	LoginRequest {
		LoginName string `json:"loginName"`
		Password  string `json:"password"`
	}
	LoginResponse {
		Id    uint64 `json:"id"`
		Token string `json:"token"`
	}
	// 注册
	RegisterRequest {
		LoginName string `json:"loginName"`
		Username  string `json:"username"`
		Password  string `json:"password"`
		Sex       uint64 `json:"sex"`
	}
	RegisterResponse {
	}
	// 用户信息
	UserInfoRequest {
		Id uint64 `json:"id"`
	}
	UserInfoResponse {
		Id        uint64 `json:"id"`
		Username  string `json:"username"`
		LoginName string `json:"loginName"`
		Sex       uint64 `json:"sex"`
	}
)
service user {
	@handler userLogin
	post /api/user/login (LoginRequest) returns (LoginResponse)
	@handler userRegister
	post /api/user/register (RegisterRequest) returns (RegisterResponse)
	@handler userInfo
	post /api/user/userInfo (UserInfoRequest) returns (UserInfoResponse)
}
syntax = "proto3";
package user;
option go_package = "./user";
// 登录
message  LoginRequest {
  string LoginName = 1;
  string  Password = 2;
}
message LoginResponse {
  uint64 Id = 1;
  string Token = 2;
}
// 注册
message RegisterRequest {
  string LoginName = 1;
  string Username = 2;
  string Password = 3;
  uint64 Sex = 4;
}
message RegisterResponse {
}
// 用户信息
message UserInfoRequest {
  uint64 Id = 1;
}
message UserInfoResponse {
  uint64 Id = 1;
  string Username = 2;
  string LoginName = 3;
  uint64 Sex = 4;
}
service User {
  rpc Login(LoginRequest) returns(LoginResponse);
  rpc Register(RegisterRequest) returns(RegisterResponse);
  rpc UserInfo(UserInfoRequest) returns(UserInfoResponse);
}
5、编写courseware.api、courseware.proto
type (
	// 新增
	AddRequest {
		Code string `json:"code"`
		Name string `json:"name"`
		Type uint64 `json:"type"`
	}
	AddResponse {
	}
	// 更新
	UpdateRequest {
		Id   uint64 `json:"id"`
		Code string `json:"code"`
		Name string `json:"name"`
		Type uint64 `json:"type"`
	}
	UpdateResponse {
	}
	// 查看
	GetRequest {
		Id uint64 `json:"id"`
	}
	GetResponse {
		Id   uint64 `json:"id"`
		Code string `json:"code"`
		Name string `json:"name"`
		Type uint64 `json:"type"`
	}
	// 删除
	DeleteRequest {
		Id uint64 `json:"id"`
	}
	DeleteResponse {
	}
)
service courseware {
	@handler coursewareAdd
	post /api/courseware/add (AddRequest) returns (AddResponse)
	@handler coursewareUpdate
	post /api/courseware/update (UpdateRequest) returns (UpdateResponse)
	@handler coursewareGet
	post /api/courseware/get (GetRequest) returns (GetResponse)
	@handler coursewareDelete
	post /api/courseware/delete (DeleteRequest) returns (DeleteResponse)
}
syntax = "proto3";
package user;
option go_package = "./courseware";
// 新增
message AddRequest {
  string Code = 1;
  string Name = 2;
  uint64 Type = 3;
}
message AddResponse {
}
// 更新
message UpdateRequest {
  uint64 Id = 1;
  string Code = 2;
  string Name = 3;
  uint64 Type = 4;
}
message UpdateResponse {
}
// 查看
message GetRequest {
  uint64 Id = 1;
}
message GetResponse {
  uint64 Id = 1;
  string Code = 2;
  string Name = 3;
  uint64 Type = 4;
}
// 删除
message DeleteRequest {
  uint64 Id = 1;
}
message DeleteResponse {
}
service Courseware {
  rpc Add(AddRequest) returns(AddResponse);
  rpc Update(UpdateRequest) returns(UpdateResponse);
  rpc Get(GetRequest) returns(GetResponse);
  rpc Delete(DeleteRequest) returns(DeleteResponse);
}
												
											go-zero docker-compose 搭建课件服务(一):编写服务api和proto的更多相关文章
- Istio入门实战与架构原理——使用Docker Compose搭建Service Mesh
		
本文将介绍如何使用Docker Compose搭建Istio.Istio号称支持多种平台(不仅仅Kubernetes).然而,官网上非基于Kubernetes的教程仿佛不是亲儿子,写得非常随便,不仅缺 ...
 - 利用 Docker Compose 搭建 SpringBoot 运行环境(超详细步骤和分析)
		
0.前言 相信点进来看这篇文章的同学们已经对 Docker Dompose 有一定的了解了,下面,我们拿最简单的例子来介绍如何使用 Docker Compose 来管理项目. 本文例子: 一个应用服务 ...
 - 使用Docker Compose搭建Service Mesh
		
使用Docker Compose搭建Service Mesh 本文将介绍如何使用Docker Compose搭建Istio.Istio号称支持多种平台(不仅仅Kubernetes).然而,官网上非基于 ...
 - Docker Compose 搭建 Redis Cluster 集群环境
		
在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...
 - Docker Compose搭建Redis一主二从三哨兵高可用集群
		
一.Docker Compose介绍 https://docs.docker.com/compose/ Docker官方的网站是这样介绍Docker Compose的: Compose是用于定义和运行 ...
 - docker compose搭建redis7.0.4高可用一主二从三哨兵集群并整合SpringBoot【图文完整版】
		
一.前言 redis在我们企业级开发中是很常见的,但是单个redis不能保证我们的稳定使用,所以我们要建立一个集群. redis有两种高可用的方案: High availability with Re ...
 - windows Docker Desktop 搭建mysql,mssql和redis服务
		
其实网上关于docker上搭建mysql的文章已经很多了,只是今晚自己搭建的时候遇到一些问题,记录一下 1.首先是pull image , docker pull mysql 2.启动服务 docke ...
 - Docker Compose搭建ELK
		
Elasticsearch默认使用mmapfs目录来存储索引.操作系统默认的mmap计数太低可能导致内存不足,我们可以使用下面这条命令来增加内存: sysctl -w vm.max_map_count ...
 - 基于Docker Compose搭建mysql主从复制(1主2从)
		
系统环境 * 3 Ubuntu 16.04 mysql 8.0.12 docker 18.06.1-ce docker-compose 1.23.0-rc3 *3 ==> PS ###我用的是 ...
 - Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)
		
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
 
随机推荐
- 设置Windows Server 2022、Win10、Win11自动登录的简单方法-OK
			
这里介绍自己从使用 Windows Server 2003 到 Windows Server 2022 一直都在使用的自动登录系统的方法,屡试不爽.网上讨论的方法太繁琐,所以共享出来,供大家参考.该方 ...
 - Unity3D学习笔记11——后处理
			
目录 1. 概述 2. 详论 2.1. 实现 2.2. 解析 1. 概述 一般来说,图形渲染引擎都会把帧缓冲(Framebuffer)技术封装成两个接口,其中之一就是后处理(Post-process) ...
 - C++ 特殊矩阵的压缩存储算法
			
1. 前言 什么是特殊矩阵? C++,一般使用二维数组存储矩阵数据. 在实际存储时,会发现矩阵中有许多值相同的数据或有许多零数据,且分布呈现出一定的规律,称这类型的矩阵为特殊矩阵. 为了节省存储空间, ...
 - 常用类--String
			
一.String 1.1 String是不可变对象 String的底层是一个 char类型字符数组 String类是final修饰的,不能被继承,不能改变,但引用可以重新赋值 String采用的编码方 ...
 - ArkUI 组件 Props
			
在上一篇博客文章中简单地提到了 Props . 在使用 Props 时需要注意到一个点,子组件从寄主页面传递过来的值是单向的,也就是子组件不能直接修改传递下来的值,即单向性. 以上篇文章定义的头像组件 ...
 - Java SE 14 新增特性
			
Java SE 14 新增特性 作者:Grey 原文地址:Java SE 14 新增特性 源码 源仓库: Github:java_new_features 镜像仓库: GitCode:java_new ...
 - VS2019 Community社区版登录提示:我们无法刷新此账户的凭证 解决方法
			
最正确的方式: 1.点击 帮助-->发送反馈-->报告问题 2.点击 检查新的许可证 ,即可登陆成功 3.如果提示:无法下载或者下载失败. 4.那么就需要在左边 账户选项 中将 嵌入式We ...
 - C与C++有什么区别
			
C是一个结构化语言,它的侧重点在于算法和数据结构.对语言本身而言,C是C++的一个子集. C程序的设计首要考虑的是如何通过一个过程,对输入进行运算处理,得到输出. 对于C++,首要考虑的是如何构造一个 ...
 - 关于python文件写入问题
			
第一种.用for循环不断打开文件写入关闭 测试代码数据如下: import time begin = time.perf_counter() def a(f, lis): f.write(lis + ...
 - Helm安装ingress-nginx-4.2.0
			
Application version 1.3.0 Chart version 4.2.0 获取chart包 helm fetch ingress-nginx/ingress-nginx --vers ...