0、转载

go-zero docker-compose 搭建课件服务(一):编写服务api和proto

0.1源码地址

https://github.com/liuyuede123/go-zero-courseware

1、创建项目目录

  1. mkdir go-zero-courseware
  2. cd go-zero-courseware

2、安装goctl

  1. # 安装
  2. GOPROXY=https://goproxy.cn/,direct go install github.com/zeromicro/go-zero/tools/goctl@latest
  3. # mac放到/usr/local/bin/下面
  4. ln -s ~/go/bin/goctl /usr/local/bin/goctl
  5. # 校验
  6. goctl -v
  7. goctl version 1.4.0 darwin/amd64 # 看到版本说明安装成功

3、创建服务

创建服务目录

  1. mkdir -p user/api
  2. mkdir -p user/rpc
  3. mkdir -p courseware/api
  4. mkdir -p courseware/rpc

创建user.api、courseware.api、user.proto、courseware.proto

  1. touch user/api/user.api
  2. touch user/rpc/user.proto
  3. touch courseware/api/courseware.api
  4. touch courseware/rpc/courseware.proto

4、编写user.api、user.proto

  1. type (
  2. // 登录
  3. LoginRequest {
  4. LoginName string `json:"loginName"`
  5. Password string `json:"password"`
  6. }
  7. LoginResponse {
  8. Id uint64 `json:"id"`
  9. Token string `json:"token"`
  10. }
  11. // 注册
  12. RegisterRequest {
  13. LoginName string `json:"loginName"`
  14. Username string `json:"username"`
  15. Password string `json:"password"`
  16. Sex uint64 `json:"sex"`
  17. }
  18. RegisterResponse {
  19. }
  20. // 用户信息
  21. UserInfoRequest {
  22. Id uint64 `json:"id"`
  23. }
  24. UserInfoResponse {
  25. Id uint64 `json:"id"`
  26. Username string `json:"username"`
  27. LoginName string `json:"loginName"`
  28. Sex uint64 `json:"sex"`
  29. }
  30. )
  31. service user {
  32. @handler userLogin
  33. post /api/user/login (LoginRequest) returns (LoginResponse)
  34. @handler userRegister
  35. post /api/user/register (RegisterRequest) returns (RegisterResponse)
  36. @handler userInfo
  37. post /api/user/userInfo (UserInfoRequest) returns (UserInfoResponse)
  38. }
  1. syntax = "proto3";
  2. package user;
  3. option go_package = "./user";
  4. // 登录
  5. message LoginRequest {
  6. string LoginName = 1;
  7. string Password = 2;
  8. }
  9. message LoginResponse {
  10. uint64 Id = 1;
  11. string Token = 2;
  12. }
  13. // 注册
  14. message RegisterRequest {
  15. string LoginName = 1;
  16. string Username = 2;
  17. string Password = 3;
  18. uint64 Sex = 4;
  19. }
  20. message RegisterResponse {
  21. }
  22. // 用户信息
  23. message UserInfoRequest {
  24. uint64 Id = 1;
  25. }
  26. message UserInfoResponse {
  27. uint64 Id = 1;
  28. string Username = 2;
  29. string LoginName = 3;
  30. uint64 Sex = 4;
  31. }
  32. service User {
  33. rpc Login(LoginRequest) returns(LoginResponse);
  34. rpc Register(RegisterRequest) returns(RegisterResponse);
  35. rpc UserInfo(UserInfoRequest) returns(UserInfoResponse);
  36. }

5、编写courseware.api、courseware.proto

  1. type (
  2. // 新增
  3. AddRequest {
  4. Code string `json:"code"`
  5. Name string `json:"name"`
  6. Type uint64 `json:"type"`
  7. }
  8. AddResponse {
  9. }
  10. // 更新
  11. UpdateRequest {
  12. Id uint64 `json:"id"`
  13. Code string `json:"code"`
  14. Name string `json:"name"`
  15. Type uint64 `json:"type"`
  16. }
  17. UpdateResponse {
  18. }
  19. // 查看
  20. GetRequest {
  21. Id uint64 `json:"id"`
  22. }
  23. GetResponse {
  24. Id uint64 `json:"id"`
  25. Code string `json:"code"`
  26. Name string `json:"name"`
  27. Type uint64 `json:"type"`
  28. }
  29. // 删除
  30. DeleteRequest {
  31. Id uint64 `json:"id"`
  32. }
  33. DeleteResponse {
  34. }
  35. )
  36. service courseware {
  37. @handler coursewareAdd
  38. post /api/courseware/add (AddRequest) returns (AddResponse)
  39. @handler coursewareUpdate
  40. post /api/courseware/update (UpdateRequest) returns (UpdateResponse)
  41. @handler coursewareGet
  42. post /api/courseware/get (GetRequest) returns (GetResponse)
  43. @handler coursewareDelete
  44. post /api/courseware/delete (DeleteRequest) returns (DeleteResponse)
  45. }
  1. syntax = "proto3";
  2. package user;
  3. option go_package = "./courseware";
  4. // 新增
  5. message AddRequest {
  6. string Code = 1;
  7. string Name = 2;
  8. uint64 Type = 3;
  9. }
  10. message AddResponse {
  11. }
  12. // 更新
  13. message UpdateRequest {
  14. uint64 Id = 1;
  15. string Code = 2;
  16. string Name = 3;
  17. uint64 Type = 4;
  18. }
  19. message UpdateResponse {
  20. }
  21. // 查看
  22. message GetRequest {
  23. uint64 Id = 1;
  24. }
  25. message GetResponse {
  26. uint64 Id = 1;
  27. string Code = 2;
  28. string Name = 3;
  29. uint64 Type = 4;
  30. }
  31. // 删除
  32. message DeleteRequest {
  33. uint64 Id = 1;
  34. }
  35. message DeleteResponse {
  36. }
  37. service Courseware {
  38. rpc Add(AddRequest) returns(AddResponse);
  39. rpc Update(UpdateRequest) returns(UpdateResponse);
  40. rpc Get(GetRequest) returns(GetResponse);
  41. rpc Delete(DeleteRequest) returns(DeleteResponse);
  42. }

go-zero docker-compose 搭建课件服务(一):编写服务api和proto的更多相关文章

  1. Istio入门实战与架构原理——使用Docker Compose搭建Service Mesh

    本文将介绍如何使用Docker Compose搭建Istio.Istio号称支持多种平台(不仅仅Kubernetes).然而,官网上非基于Kubernetes的教程仿佛不是亲儿子,写得非常随便,不仅缺 ...

  2. 利用 Docker Compose 搭建 SpringBoot 运行环境(超详细步骤和分析)

    0.前言 相信点进来看这篇文章的同学们已经对 Docker Dompose 有一定的了解了,下面,我们拿最简单的例子来介绍如何使用 Docker Compose 来管理项目. 本文例子: 一个应用服务 ...

  3. 使用Docker Compose搭建Service Mesh

    使用Docker Compose搭建Service Mesh 本文将介绍如何使用Docker Compose搭建Istio.Istio号称支持多种平台(不仅仅Kubernetes).然而,官网上非基于 ...

  4. Docker Compose 搭建 Redis Cluster 集群环境

    在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...

  5. Docker Compose搭建Redis一主二从三哨兵高可用集群

    一.Docker Compose介绍 https://docs.docker.com/compose/ Docker官方的网站是这样介绍Docker Compose的: Compose是用于定义和运行 ...

  6. docker compose搭建redis7.0.4高可用一主二从三哨兵集群并整合SpringBoot【图文完整版】

    一.前言 redis在我们企业级开发中是很常见的,但是单个redis不能保证我们的稳定使用,所以我们要建立一个集群. redis有两种高可用的方案: High availability with Re ...

  7. windows Docker Desktop 搭建mysql,mssql和redis服务

    其实网上关于docker上搭建mysql的文章已经很多了,只是今晚自己搭建的时候遇到一些问题,记录一下 1.首先是pull image , docker pull mysql 2.启动服务 docke ...

  8. Docker Compose搭建ELK

    Elasticsearch默认使用mmapfs目录来存储索引.操作系统默认的mmap计数太低可能导致内存不足,我们可以使用下面这条命令来增加内存: sysctl -w vm.max_map_count ...

  9. 基于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  ###我用的是 ...

  10. Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

随机推荐

  1. centos7.6内核之cfs_bandwidth下的distribute_cfs_runtime hard lockup

    接到业务兄弟报障,出现多例crash,堆栈大多数如下: KERNEL: /usr/lib/debug/lib/modules/3.10.0-957.27.2.el7.x86_64/vmlinuxDUM ...

  2. 痞子衡嵌入式:在i.MXRT启动头FDCB里使能串行NOR Flash的QPI/OPI模式

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是在FDCB里使能串行NOR Flash的QPI/OPI模式. 我们知道 Flash 读时序里有五大子序列 CMD + ADDR + MO ...

  3. SpringMVC 02: SpringMVC响应get和post请求 + 5种获取前端数据的方式

    响应get和post请求 SpringMVC中使用@RequestMapping注解完成对get请求和post请求的响应 项目结构和配置文件与SpringMVC博客集中的"SpringMVC ...

  4. GB/T 28181联网系统通信协议结构和技术实现

    技术回顾 在本文开头,我们先一起回顾下GB/T28181联网系统通信协议结构: 联网系统在进行视音频传输及控制时应建立两个传输通道:会话通道和媒体流通道. 会话通道用于在设备之间建立会话并传输系统控制 ...

  5. 全局索引与分区索引对于SQL性能影响的比较

    KingbaseES 提供了对于分区表 global index 的支持.global index 不仅提供了对于唯一索引功能的改进(无需包含分区键),而且在性能上相比非global index (l ...

  6. KingbaseES图形化安装未弹出界面应该如何处理

      关键字: KingbaseES.X Windows.Gnome.DISPLAY 一.Linux下图形安装环境要求 1) 系统首先安装了X Windows的图形化支持软件包. 2) 系统安装了KDE ...

  7. 可靠的自托管「GitHub 热点速览 v.22.37」

    自托管(Self-Hosted) 是很多开源项目主打的亮点:数据在手,安全我有.本周 GitHub 热点榜单上有多款自托管的项目,当中自然不能少了之前 HG 小伙伴 @makes world simp ...

  8. .NET 7 SDK 开始 支持构建容器化应用程序

    微软于 8 月 25 日在.NET官方博客上,.NET 7 SDK 将包括对创建容器化应用程序的支持,作为构建发布过程的一部分,从而绕过需要.显式 Docker 构建阶段. 这一决定背后的基本认知是简 ...

  9. [BJDCTF2020]Easy MD5 WP

    老样子 打开看看 你会发现 啥也没有 有一个输入框,随便输入看看 抓包发现跳转leveldo4.php 同时看到 hint 里面有select * from 'admin' where passwor ...

  10. Kafka开启SASL认证 【windowe详细版】

    一.JAAS配置 Zookeeper配置JAAS zookeeper环境下新增一个配置文件,如zk_server_jass.conf,内容如下: Server { org.apache.kafka.c ...