go-micro api 调用srv,为什么rpc: can't find method show?

发布于 2022-09-11 22:45:30 字数 1181 浏览 24 评论 0

通过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请求会报错

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文