golang 微服务开发(六)go micro结合gin 实现客

2022-05-04  本文已影响0人  mafa1993

代码地址

https://github.com/mafa1993/go-micro-learn

目录为go/src/micro_client

  1. 我们仍然复用3中实现好的gin mvc结构的框架,把他复制到micro_client中
  2. 使用go mod init micro_client对这个目录进行初始化
  3. 修改原来代码中的包引入,将mirco_learn 改为 micro_client
  4. 我们在客户端只是在控制器里进行rpc的调用,所以暂时不需要使用model层,增加rpc目录,进行远程调用的封装
  5. 创建proto文件夹,存放proto文件和生成的go文件
  6. 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
}
上一篇下一篇

猜你喜欢

热点阅读