代码地址
https://github.com/mafa1993/go-micro-learn
目录为go/src/micro_client
- 我们仍然复用3中实现好的gin mvc结构的框架,把他复制到micro_client中
- 使用go mod init micro_client对这个目录进行初始化
- 修改原来代码中的包引入,将mirco_learn 改为 micro_client
- 我们在客户端只是在控制器里进行rpc的调用,所以暂时不需要使用model层,增加rpc目录,进行远程调用的封装
- 创建proto文件夹,存放proto文件和生成的go文件
- proto文件我们复用上节课的
app/api/v1/goods.go
// app/api/v1/goods.go
package v1
import (
"fmt"
"strconv"
"micro_client/rpc"
"github.com/gin-gonic/gin"
)
func GetGoods(c *gin.Context) {
goodsId, _ := strconv.Atoi(c.Query("goods_id")) // 将接收到的goods_id 转换为int
goodsInfo := rpc.GetGoodsDetails(goodsId)
fmt.Println("goodsInfo", goodsInfo)
c.JSON(200, goodsInfo)
}
rpc/rpc.go
// rpc/rpc.go
package rpc
import (
"context"
"fmt"
proto "micro_client/proto"
"github.com/micro/go-micro/v2/client"
)
func init() {
}
func GetGoodsDetails(goodsId int) *proto.ResponseGoods {
fmt.Println("rpc goodsid ", goodsId)
goods := proto.NewGoodsService("goods", client.DefaultClient)
res, _ := goods.GetGoodsDetails(context.Background(), &proto.RequestGoods{
GoodsId: int32(goodsId),
})
return res
}
网友评论