diff --git a/ch4-rpc/ch4-06-grpc-ext.md b/ch4-rpc/ch4-06-grpc-ext.md index c9d1507..992f8d9 100644 --- a/ch4-rpc/ch4-06-grpc-ext.md +++ b/ch4-rpc/ch4-06-grpc-ext.md @@ -240,7 +240,7 @@ func main() { err := RegisterRestServiceHandlerFromEndpoint( ctx, mux, "localhost:5000", - grpc.WithInsecure(), + []grpc.DialOption{grpc.WithInsecure()}, ) if err != nil { log.Fatal(err) @@ -250,6 +250,26 @@ func main() { } ``` +启动grpc服务 ,端口5000 +```go +type RestServiceImpl struct{} + +func (r *RestServiceImpl) Get(ctx context.Context, message *StringMessage) (*StringMessage, error) { + return &StringMessage{Value: "Get hi:" + message.Value + "#"}, nil +} + +func (r *RestServiceImpl) Post(ctx context.Context, message *StringMessage) (*StringMessage, error) { + return &StringMessage{Value: "Post hi:" + message.Value + "@"}, nil +} +func main() { + grpcServer := grpc.NewServer() + RegisterRestServiceServer(grpcServer, new(RestServiceImpl)) + lis, _ := net.Listen("tcp", ":5000") + grpcServer.Serve(lis) +} + +``` + 首先通过runtime.NewServeMux()函数创建路由处理器,然后通过RegisterRestServiceHandlerFromEndpoint函数将RestService服务相关的REST接口中转到后面的gRPC服务。grpc-gateway提供的runtime.ServeMux类也实现了http.Handler接口,因此可以和标准库中的相关函数配合使用。 当gRPC和REST服务全部启动之后,就可以用curl请求REST服务了: