proto工具插件集

此开源图书由ithaiqarrow-up-right原创,创作不易转载请注明出处

  • grpc提供http接口调用(go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway)

package main

import (
  "context"
  "flag"
  "net/http"

  "github.com/golang/glog"
  "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
  "google.golang.org/grpc"

  gw "github.com/yourorg/yourrepo/proto/gen/go/your/service/v1/your_service"  // Update
)

var (
  // command-line options:
  // gRPC server endpoint
  grpcServerEndpoint = flag.String("grpc-server-endpoint",  "localhost:9090", "gRPC server endpoint")
)

func run() error {
  ctx := context.Background()
  ctx, cancel := context.WithCancel(ctx)
  defer cancel()

  // Register gRPC server endpoint
  // Note: Make sure the gRPC server is running properly and accessible
  mux := runtime.NewServeMux()
  opts := []grpc.DialOption{grpc.WithInsecure()}
  err := gw.RegisterYourServiceHandlerFromEndpoint(ctx, mux,  *grpcServerEndpoint, opts)
  if err != nil {
    return err
  }

  // Start HTTP server (and proxy calls to gRPC server endpoint)
  return http.ListenAndServe(":8081", mux)
}

func main() {
  flag.Parse()
  defer glog.Flush()

  if err := run(); err != nil {
    glog.Fatal(err)
  }
}
  • swagger接口文档(go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger)

  • 参数校验(go get github.com/envoyproxy/protoc-gen-validate)

  • 字段tag修改&引入时间类型(go get github.com/favadi/protoc-go-inject-tag)

pb命令

最后更新于