素早くマイクロサービスを構築するために使用gRPC-ゲートウェイ - 双方向の認証RPC-ゲートウェイの使用を(httpとRPCインターフェースを提供しながら)

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

 

 

 サービスgrpcにアクセスするためにいるProtobuf形式に、前方grpcプロキシの上にレイヤーを追加し、

 

インストール

行くのget -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc- ゲートウェイ
行くのget -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen- 闊歩
行くのget -u githubのを。 COM / golang /いるProtobuf / protoc-GEN-行きます

 

Prod.proto

構文= proto3 
パッケージサービス。
インポート" グーグル/ API / annotations.proto " ; 

メッセージProdRequest { 
    INT32 PROD_ID = 1// 传入的商品ID 
} 
メッセージProdResponse { 
    INT32 prod_stock = 1// 商品库存
} 

サービスProdService { 
    RPC GetProdStock(ProdRequest)リターン(ProdResponse){ 
        オプション(google.api.http) = {
             得る" / V1 / PROD / {PROD_IDを} " 
        }。

    } 
}

 

二つのファイル

まず、pbfilesにcd

これはProd.pb.go生成
Protoc ../:--go_out =プラグイン= GRPC サービスProd.proto 


これはProd.pb.gw.go生成
Protoc   --grpc-gateway_out = = logtostderrをtrueに:製品版../サービス.proto

 

httpserver.go

メインパッケージ

のインポート(
    " 文脈" 
    " github.com/grpc-ecosystem/grpc-gateway/runtime " 
    " google.golang.org/grpc " 
    " grpcpro /サービス" 
    " ログ" 
    " ネット/ HTTP " 

{)(メインFUNCを
    gwmux: = runtime.NewServeMux()
    OPT: = [] grpc.DialOption {grpc.WithInsecure()} 
    ERR: = services.RegisterProdServiceHandlerFromEndpoint(context.Background()、
        gwmux、" ローカルホスト:8081 " 、
    OPT) の場合、ERR!=ゼロ{ 
        log.Fatal(ERR)
    } 
    httpServerの: =&http.Server { 
        ADDR:" :8080 " 
        ハンドラ:gwmux、
    } 
    httpServer.ListenAndServe()

}

 

 

server.go

メインパッケージ

のインポート(
    " google.golang.org/grpc " 
    " grpcpro /サービス" 
    " ネット" 

、メイン(){FUNC 
    :rpcServer = grpc.NewServer()
    services.RegisterProdServiceServer(rpcServer、新しい(services.ProdService))

    、LISを_: = net.Listen(" TCP "" :8081 " 

    rpcServer.Serve(LIS)


}

 

おすすめ

転載: www.cnblogs.com/sunlong88/p/12051719.html