http服务反向代理
1.16+
cd grpchttp/example/hello
go run hello.go -f ./etc/hello.yaml
go run proxy.go
curl --location --request POST '127.0.0.1:2333/hello.Hello/Say' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "test"
}'
注意:使用较新的proto工具生产的桩代码是有可导出的Desc对象的,不需要再执行1、2步
- 在stub代码目录下添加文件grpchttp.go(其他合法名字也可以)。
- 在grpchttp.go文件中添加可导出对象ServiceDesc代码:
package hello var ServiceDesc = _Hello_serviceDesc
- 在hello.go中注册HTTP接口
var mux http.ServeMux httpgrpc.HandleServices(mux.HandleFunc, "/", reg, nil, nil) lis, err := net.Listen("tcp", fmt.Sprintf(":%d", c.HttpPort)) if err != nil { panic(err) } logx.Infof("http port: %s", lis.Addr().String()) httpServer := http.Server{Handler: &mux} go httpServer.Serve(lis) defer httpServer.Close()