zoukankan      html  css  js  c++  java
  • grpc-gateway使用

    前言

    记录下使用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
    
  • 相关阅读:
    abstract和virtual
    vue中 关于$emit的用法
    babel简介
    vue脚手架的使用
    RAM和ROM
    判断匿名类是否继承父类
    ABP应用层——参数有效性验证
    vue-devtools的安装与使用
    JavaScript中Object.keys用法
    vue中created、mounted、 computed,watch,method 等方法整理
  • 原文地址:https://www.cnblogs.com/efan/p/15109237.html
Copyright © 2011-2022 走看看