stack-labs / questions

任何关于Micro的问题都可以在Issue中创建
27 stars 6 forks source link

关于http到grpc server的转换 #60

Open poembro opened 4 years ago

poembro commented 4 years ago

我看到 https://github.com/wiatingpub/MTBSystem 项目中 单独用net/http做的 http 到 grpc 的路由转换 实现代码 https://github.com/wiatingpub/MTBSystem/blob/master/src/api-srv/main.go

于是在教程的代码里尝试了下发现有报错: json.RawMessage is not protoiface.MessageV1: missing method ProtoMessage

想问下有没有类似的做法或案例

printfcoder commented 4 years ago

http转grpc micro api是支持的。 默认的go-micro启动就是grpc风格的服务,micro api可以代理http转向go-micro。实现也很简单,将路由映射解析成服务+方法,router->service+method。然后调用具体的服务就行了

printfcoder commented 4 years ago

grpc更多示例: https://github.com/micro-in-cn/tutorials/tree/master/examples/grpc

poembro commented 4 years ago

http转grpc micro api是支持的。 替代的go-micro启动就是grpc风格的服务,micro api可以代理http转向go-micro。实现也很简单,将路由映射解析成服务+方法,rou​​ter-> service +方法。然后调用具体的服务就行了

感谢解答!

关于 ”rou​​ter-> service +方法“ 我理解就是 micro api 网关的 --handler=rpc 参数。

如果按照 https://github.com/wiatingpub/MTBSystem/blob/master/src/api-srv/main.go 这个方案来实现,好像更加灵活(比如:收集日志,访问量,统一鉴权等等), 不知道大家生产环境推荐哪种做法。

ntboot commented 3 years ago

我看到 https://github.com/wiatingpub/MTBSystem 项目中 单独用net/http做的 http 到 grpc 的路由转换 实现代码 https://github.com/wiatingpub/MTBSystem/blob/master/src/api-srv/main.go

于是在教程的代码里尝试了下发现有报错: json.RawMessage is not protoiface.MessageV1: missing method ProtoMessage

想问下有没有类似的做法或案例

您的这个问题解决了吗,我也想通过net/http 实现一个api网关, 而不是通过handel=rpc方式

ntboot commented 3 years ago

我看到 https://github.com/wiatingpub/MTBSystem 项目中 单独用net/http做的 http 到 grpc 的路由转换 实现代码 https://github.com/wiatingpub/MTBSystem/blob/master/src/api-srv/main.go 于是在教程的代码里尝试了下发现有报错: json.RawMessage is not protoiface.MessageV1: missing method ProtoMessage 想问下有没有类似的做法或案例

您的这个问题解决了吗,我也想通过net/http 实现一个api网关, 而不是通过handel=rpc方式

我现在的问题也和你一样的报错