go-micro api 调用srv,为什么rpc: can't find method show?
通过web控制面板 直接 请求 后端srv,处理正常. 但是一旦 通过gateway 调用api层,然后在调用 srv,就会报错:
rpc:
{
id: "go.micro.api.goods.goods.show",
code: 500,
detail: "rpc: can't find method show",
status: "Internal Server Error"
}
api层是通过
func GoodsFromContext(ctx context.Context) (goods.GoodsService, bool) {
c, ok := ctx.Value(goodsKey{}).(goods.GoodsService)
return c, ok
}
这个方法获取的 goodsSrv的client的.
client := GoodsFromContext(ctx)
client.Show(参数) //报错 show方法不存在
如果直接通过micro web工具直接 rpc 调用goodsSrv的show方法是可以调用成功的
大概目录介绍
gateway: 网关层
api: api服务层
srv: 具体后端微服务
调用流程: 发起http请求到网关, 然后进入api层执行对应的handler, handler里面封装创建 具体微服务的rpc client 并向后端发起rpc请求.
代码截图:
第三张的handler内部发起的show请求也会报错
第四张图片中的show方法内部的rpc show请求会报错
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论