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
    
  • 相关阅读:
    结对开发----找出“水王"
    团队博客----典型用户分析
    结对开发----电梯调度(课堂练习)
    团队开发_需求分析
    站立会议02(二期)
    站立会议01(二期)
    《软件工程》课程改进意见
    站立会议07(一期)
    站立会议06(一期)
    站立会议05(一期)
  • 原文地址:https://www.cnblogs.com/efan/p/15109237.html
Copyright © 2011-2022 走看看