当前位置: 首页 > news >正文

[go-zero] goctl 生成api和rpc

文章目录

      • 1.goctl 概述
      • 2.go-zero 需要安装的组件
      • 3.生成 api
      • 4.生成 rpc

1.goctl 概述

goctl支持多种rpc,较为流行的是google开源的grpc,这里主要介绍goctl rpc protoc的代码生成与使用。protoc是grpc的命令,作用是将proto buffer文件转化为相应语言的代码。

goctl 是 go-zero 的内置脚手架,是提升开发效率的一大利器,可以一键生成代码、文档、部署 k8s yaml、dockerfile 等。

goctl安装:

go install github.com/zeromicro/go-zero/tools/goctl@latest

在这里插入图片描述

go-zero框架设计:

在这里插入图片描述

客户端 -> Api -> Service -> 缓存 -> Db

  • 客户端: IOS, Android, web, PC
  • Api: Http, 鉴权, 加密, 日志, 异常捕获, 监控, 数据统计, 并发, 链路跟踪, 超时, 熔断, 降级
  • Service: gRPC, 缓存, 日志, 异常捕获, 监控, 数据统计, 并发, 链路跟踪, 超时, 熔断, 降级

2.go-zero 需要安装的组件

  • protoc
  • protoc-gen-go
  • protoc-gen-go-grpc
  • goctl

Protobuf下载安装:


https://github.com/protocolbuffers/protobuf/releases

在这里插入图片描述

将下载的文件解压,将解压后的bin目录加入到环境变量的path下。

在这里插入图片描述

在这里插入图片描述

下载 goctl, proto-gen-go, proto-gen-go-grpc:

go install github.com/zeromicro/go-zero/tools/goctl@latestgoctl env check -i -f --verbosego install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1

3.生成 api

goctl api new api

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

logic/apilogic.go

package logicimport ("context""go-zero-demo01/user/api/internal/svc""go-zero-demo01/user/api/internal/types""github.com/zeromicro/go-zero/core/logx"
)type ApiLogic struct {logx.Loggerctx    context.ContextsvcCtx *svc.ServiceContext
}func NewApiLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ApiLogic {return &ApiLogic{Logger: logx.WithContext(ctx),ctx:    ctx,svcCtx: svcCtx,}
}func (l *ApiLogic) Api(req *types.Request) (resp *types.Response, err error) {// todo: add your logic here and delete this linereturn &types.Response{Message: "api success",}, nil
}
cd api
go mod tidy
go run api.go

在这里插入图片描述

在这里插入图片描述

4.生成 rpc

goctl rpc new user

或者直接提供goland中的goctl的插件生成rpc的结构。

在这里插入图片描述

user.proto

syntax = "proto3";package user;option go_package = './user';message UserReq {string id = 1;
}message UserResp {string id = 1;string name = 2;
}service User {rpc getUser(UserReq) returns (UserResp);
}

在这里插入图片描述

在这里插入图片描述

etcd:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

go run user.go

在这里插入图片描述

利用apifox打开grpc的接口:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

http://www.lryc.cn/news/390829.html

相关文章:

  • docker -run hello-world超时
  • 拓扑学习系列(8)黎曼度量曲面与高斯曲率
  • 汽车IVI中控开发入门及进阶(三十四):i.MX linux BSP
  • 【Python机器学习】算法链与管道——构建管道
  • Postman 高级用法学习
  • 从新手到高手:Scala函数式编程完全指南,Scala 访问修饰符(6)
  • IDEA 一键部署Docker
  • linux centos tomcat 不安全的HTTP请求方法
  • 深入Django(六)
  • PHP房产小程序微信小程序系统源码
  • vscode 历史便携版下载方法
  • 深入理解计算机系统 CSAPP 家庭作业8.19
  • JDBC学习(Java DataBase Connectivity)
  • 2024源代码加密软件评测丨保护企业源代码防泄密
  • 测试图片上传功能,使用postman提供的url
  • 使用dot来画流程图
  • 基于Java的微信记账小程序【附源码】
  • uniapp中 uni.previewImage用法
  • 第十三章 StringTable
  • Adobe Acrobat添加时间戳服务器
  • 数据库管理-第217期 Oracle的高可用-02(20240704)
  • 搭建基础库~
  • 深入了解Linux中的udhcpc:动态主机配置协议客户端
  • O2OA(翱途) 开发平台之HTTP端口规划
  • 以创新思维驱动下的盲盒小程序:重塑用户体验
  • 设计资料:520-基于ZU15EG 适配AWR2243的雷达验证底板 高速信号处理板 AWR2243毫米波板
  • 晋级国赛!卓翼飞思技术引领,助力辽宁赛区机器人及人工智能大赛圆满收官
  • react ts 封装3D柱状图,支持渐变
  • css---before和after伪元素
  • 下载后端返回的图片,而不是打开图片