首页 > Web开发 > 详细

使用gRPC-Gateway快速构建微服务-双向认证下rpc-gateway使用(同时提供rpc和http接口)

时间:2019-12-16 22:31:39      阅读:153      评论:0      收藏:0      [点我收藏+]

https://github.com/grpc-ecosystem/grpc-gateway

技术分享图片

 

 

 在grpc之上加一层代理并转发,转变成protobuf格式来访问grpc服务

 

安装

go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
go get -u github.com/golang/protobuf/protoc-gen-go

 

Prod.proto

syntax="proto3";
package services;
import "google/api/annotations.proto";

message  ProdRequest {
    int32 prod_id =1;   //传入的商品ID
}
message ProdResponse{
    int32 prod_stock=1;//商品库存
}

service ProdService {
    rpc GetProdStock (ProdRequest) returns (ProdResponse){
        option (google.api.http) = {
            get: "/v1/prod/{prod_id}"
        };

    }
}

 

生成两个文件

首先cd 进入pbfiles

这会生成Prod.pb.go
protoc --go_out=plugins=grpc:../services  Prod.proto


这会生成Prod.pb.gw.go
protoc  --grpc-gateway_out=logtostderr=true:../services Prod.proto

 

httpserver.go

package main

import (
    "context"
    "github.com/grpc-ecosystem/grpc-gateway/runtime"
    "google.golang.org/grpc"
    "grpcpro/services"
    "log"
    "net/http"
)

func main()  {
    gwmux:=runtime.NewServeMux()
    opt := []grpc.DialOption{grpc.WithInsecure()}
    err:=services.RegisterProdServiceHandlerFromEndpoint(context.Background(),
        gwmux,"localhost:8081",opt)
    if err != nil {
        log.Fatal(err)
    }
    httpServer:=&http.Server{
        Addr:":8080",
        Handler:gwmux,
    }
    httpServer.ListenAndServe()

}

 

 

server.go

package main

import (
    "google.golang.org/grpc"
    "grpcpro/services"
    "net"
)

func main()  {
    rpcServer:=grpc.NewServer()
    services.RegisterProdServiceServer(rpcServer,new(services.ProdService))

    lis,_:=net.Listen("tcp",":8081")

    rpcServer.Serve(lis)


}

 

使用gRPC-Gateway快速构建微服务-双向认证下rpc-gateway使用(同时提供rpc和http接口)

原文:https://www.cnblogs.com/sunlong88/p/12051719.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!