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方法是可以调用成功的


clipboard.png

大概目录介绍
gateway: 网关层
api: api服务层
srv: 具体后端微服务

调用流程: 发起http请求到网关, 然后进入api层执行对应的handler, handler里面封装创建 具体微服务的rpc client 并向后端发起rpc请求.

代码截图:

clipboard.png

clipboard.png

clipboard.png

第三张的handler内部发起的show请求也会报错
第四张图片中的show方法内部的rpc show请求会报错

阅读 3.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题