美文网首页
golang 微服务开发(六)go micro结合gin 实现客

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

作者: mafa1993 | 来源:发表于2022-05-04 20:47 被阅读0次

    代码地址

    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
    }
    

    相关文章

      网友评论

          本文标题:golang 微服务开发(六)go micro结合gin 实现客

          本文链接:https://www.haomeiwen.com/subject/uhsgyrtx.html