首页 > 其他分享 >Golang Grpc-Gateway生成-基础版

Golang Grpc-Gateway生成-基础版

时间:2024-02-06 10:01:21浏览次数:24  
标签:protoc proto Grpc gen Golang grpc gateway go Gateway

时间久了不用就会忘记指令,这里做个笔记

创建一个文件

// +build tools

package tools

import (
    _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway"
    _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2"
    _ "google.golang.org/grpc/cmd/protoc-gen-go-grpc"
    _ "google.golang.org/protobuf/cmd/protoc-gen-go"
)

然后执行go mod tidy,相当于执行了下面的命令

 go install \
    github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway \
    github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 \
    google.golang.org/protobuf/cmd/protoc-gen-go \
    google.golang.org/grpc/cmd/protoc-gen-go-grpc

查看go env指令下gobin的目录,是否安装成功这几个文件

-rwxr-xr-x 1 root root  9222148 Jul 18  2023 protoc-gen-go
-rwxr-xr-x 1 root root  8803881 Jul 18  2023 protoc-gen-go-grpc
-rwxr-xr-x 1 root root 11999231 Feb  6 09:26 protoc-gen-grpc-gateway

创建测试的proto

syntax = "proto3";
package pb;
option go_package = "hook/pb";

import "google/api/annotations.proto";

message StringMessage {
  string value = 1;
}

service YourService {

  rpc Echo(StringMessage) returns (StringMessage) {
    option (google.api.http) = {
      post: "/v1/example/echo"
      body: "*"
    };
  }
}

引入annotations.proto文件,因为添加的注解依赖该文件。

该文件需要手动从 https://github.com/googleapis/googleapis 仓库下载到自己的项目中。

该文件需要手动从 https://github.com/googleapis/googleapis 仓库下载到自己的项目中。

该文件需要手动从 https://github.com/googleapis/googleapis 仓库下载到自己的项目中.目录在https://github.com/googleapis/googleapis/tree/master/google/api

或者去自己的gopath目录下的pkg/mod下去找 ~/go/pkg/mod/github.com/grpc-ecosystem/grpc-gateway/[email protected]/protoc-gen-openapiv2/options,然后创建目录并复制过来

annotations.pb.go  annotations.proto  annotations.swagger.json  BUILD.bazel  openapiv2.pb.go  openapiv2.proto  openapiv2.swagger.json

目录结构

proto
├── google
│   └── api
│       ├── annotations.proto
│       └── http.proto
└── helloworld
    └── my.proto

执行指令,因为我在同级目录下,所以我用的路径都是"."

protoc --proto_path=.  --go_out=.  --go_opt=paths=source_relative  --go-grpc_out=. --go-grpc_opt=paths=source_relative  --grpc-gateway_out=.  --grpc-gateway_opt=paths=source_relative my.proto

标签:protoc,proto,Grpc,gen,Golang,grpc,gateway,go,Gateway
From: https://www.cnblogs.com/qcy-blog/p/18009202

相关文章

  • go-carbon v2.3.8 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
    carbon是一个轻量级、语义化、对开发者友好的golang时间处理库,支持链式调用。目前已被awesome-go收录,如果您觉得不错,请给个star吧github.com/golang-module/carbongitee.com/golang-module/carbon安装使用Golang版本大于等于1.16//使用github库goget-ugithu......
  • 一些值得推荐的golang库
    通用工具类增强库:goutil项目地址:https://github.com/gookit/goutil简介:HelperUtils(700+):int,byte,string,array/slice,map,struct,dump,convert/format,error,web/http,cli/flag,OS/ENV,filesystem,system,test/assert,timeandmore.Go常用的一些工具函......
  • 面试官:SpringCloudGateway过滤器类型有哪些?
    在SpringCloudGateway中,过滤器是在请求到达目标服务之前或之后,执行某些特定操作的一种机制。例如,它可以实现对传入的请求进行验证、修改、日志记录、身份验证、流量控制等各种功能。在SpringCloudGateway中,过滤器总共分为以下两大类:局部过滤器:只作用于某一个路由(route)。全......
  • PHP导出Excel,从xlswriter到golang的进化是2分缩减到5秒
    先看图 一、介绍xlswriter是一个高效处理excel文件的PHP扩展,底层以C语言实现;处理速度是PHPExcel几十倍甚至几百倍的效率。官方链接:https://gitee.com/viest/php-ext-xlswriter缺点:更深入的功能(例如读取excel图片)健全;导出excel样式不够丰富导出excel文件,xlswriter绝对是效......
  • FastGateway 一个可以用于代替Nginx的网关
    在我本人研究Yarp的时候经常用于公司项目的业务网关代理,这时候就个大佬问我是否可以实现动态加载HTTPS证书?那时候我说不太可能实现,然而在某一天我看到微软使用Yarp代替了Nginx吞吐量提升了百分之八十!这个时候我就萌生了自己使用yarp造一个Gateway的项目,应为我本身也经常使用ngi......
  • Golang 开发Android服务--交叉编译
    Golang开发Android服务--交叉编译移动端主要arm架构,编译命令CGO_ENABLED=0GOOS=linuxGOARCH=armgobuild-ogo_promine.goCGO_ENABLED=0GOOS=linux,指定临时环境变量不影响其它编译,也可以设置为全局环境变量。AOSP查看版本信息getprop不传参数查看所有属性值ge......
  • Golang 向已关闭的chan读写数据会怎样
    1.向已关闭的chan写会直接panic,报sendtoclosechannel错误packagemainfuncmain(){ //创建缓冲区为4的字符串chan schoolChan:=make(chanstring,4) //放入3个值 schoolChan<-"国防科大" schoolChan<-"北京大学" schoolChan<-"湖南大学" //......
  • Golang中make和new的区别
    1.相同点都是内建函数,都是在堆上分配内存,都需要传递类型参数2.不同点传递的参数不一样,new函数只接收一个参数,make函数可以接收一个以上的参数packagemainimport"fmt"funcmain(){ //int类型0值的指针,返回的值是以0x开头的16进制整数,参数个数为1 intZeroValueP......
  • rust使用proxy-wasm-rust-sdk开发envoy wasm 进行GRPC调用
    在一些业务中,对于客户端发送的请求,需要调用grcp服务来确认是否合规,这个时候可以在入口网关做些统一的处理。之前写的用go来编写wasm,在编写grpc调用时发现由于tinygo的原因导致无法进行grpc请求,在找了一圈后决定使用proxy-wasm-rust-sdk来完成该部分功能。一、创建项目cargone......
  • 面试官:SpringCloudGateway过滤器类型有哪些?
    在SpringCloudGateway中,过滤器是在请求到达目标服务之前或之后,执行某些特定操作的一种机制。例如,它可以实现对传入的请求进行验证、修改、日志记录、身份验证、流量控制等各种功能。在SpringCloudGateway中,过滤器总共分为以下两大类:局部过滤器:只作用于某一个路由(route......