grpc-gateway使用

本文介绍了如何使用grpc-gateway不修改原有.proto文件,轻松支持GRPC服务的HTTP请求。通过两步安装包和protoc编译,实现在HTTP与GRPC服务间透明转换,提供了Post请求示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

记录下使用grpc-gateway来支持grpc服务的http请求,网上大都是引入google/api/annotations.proto的方式,懒的改每个proto文件,在grpc-gateway的github里看到了另一种方式,不用改proto文件,适合~

原理

grpc-gateway的原理我就不赘述了,大概逻辑是http的请求过来,grpc-gateway接受请求,再生成grpc的client,去请求grpc的server端;做了层转化
所以是启了2个服务,一个http服务,一个grpc服务
如图:

安装grpc-gateway的相关包

$ go get github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway
$ go get google.golang.org/protobuf/cmd/protoc-gen-go
$ go get google.golang.org/grpc/cmd/protoc-gen-go-grpc

protoc生成相关编译文件

用protoc编译proto文件的命令,每个proto文件分别生成pb.go和pb.gw.go的后缀文件,即相关的grpc和网关的

protoc -I ../proto目录 \
--go_out=plugins=grpc:../编译生成的文件目录 \ 
--grpc-gateway_out ../编译生成的文件目录 \
--grpc-gateway_opt logtostderr=true \
--grpc-gateway_opt paths=source_relative \
--grpc-gateway_opt generate_unbound_methods=true \ 
../proto目录/*.proto

测试请求http

这里是请求test包的Service服务的Hello方法 ;必须是Post请求,因为看pb.gw.go里默认的都是POST方法请求,不然会提示错误"Method Not Allowed"

curl -XPOST  http://localhost:8081/test.Service/Hello
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值