• go语言增加参数访问


    1.服务提供者

    // 数据模型
    type ProdsRequest struct {
    Size int `form:"size"`
    }

    import
    ( "github.com/gin-gonic/gin" "github.com/micro/go-micro/registry" "github.com/micro/go-micro/web" "github.com/micro/go-plugins/registry/consul" ) // 使用gin框架 func main() { consulReg := consul.NewRegistry( registry.Addrs("127.0.0.1:8500"), ) ginRouter := gin.Default() v1Group := ginRouter.Group("/v1") { v1Group.Handle("POST", "/prods", func(context *gin.Context) { //声明变量 var gr ProdsRequest //获取绑定数据到gr变量中,底层用的指针这里要传变量地址 err := context.Bind(&gr) if err!=nil || gr.Size<=0 { gr=ProdsRequest{Size:2} } context.JSON(200, gin.H{ "data": NewProdList(gr.Size), "size":gr.Size, }) }) } web.NewService(web.Address(":8001"), web.Handler(ginRouter), web.Registry(consulReg), web.Name("product")).Run() }

    2.服务消费者

    import (
        "context"
        "fmt"
        "github.com/micro/go-micro/client"
        "github.com/micro/go-micro/client/selector"
        "github.com/micro/go-micro/registry"
        myhttp "github.com/micro/go-plugins/client/http"
        "github.com/micro/go-plugins/registry/consul"
        _ "io/ioutil"
        "log"
        _ "net/http"
    )
    type RequestParam struct {
        //消费者服务的数据模型可以不加`form:"size"`
        Size int /*`form:"size"`*/
    }
    
    func callApi2(s selector.Selector) {
        myclient := myhttp.NewClient(
            client.Selector(s),
            client.ContentType("application/json"),
        )
        //消费者传参用map
        //req := myclient.NewRequest("product", "/v1/prods", map[string]int{"size":5})
        req := myclient.NewRequest("product", "/v1/prods", RequestParam{Size: 1})
        var rsp map[string]interface{}
        err := myclient.Call(context.Background(), req, &rsp)
        if err != nil {
            log.Fatal(err)
        }
        fmt.Println(rsp)
    }
    
    func main() {
        consulReg := consul.NewRegistry(
            registry.Addrs("127.0.0.1:8500"))
        mySelector := selector.NewSelector(
            selector.Registry(consulReg),
            selector.SetStrategy(selector.RoundRobin),
        )
        callApi2(mySelector)
    }
  • 相关阅读:
    【luogu P7112】【模板】行列式求值(数学)(线性代数)(高斯消元)
    【luogu P3506】MOT-Monotonicity 2(线段树)
    【luogu AT5160】Numbers on a Circle(贪心)(堆)
    【luogu AT5159】RGB Balls(贪心)
    【luogu P5435】基于值域预处理的快速 GCD(数学)
    Day-20 基础模块1
    F5学习笔记
    Day-19 面向对象06 多继承 MRO C3算法 super()(重点)
    Day-18 面向对象05 约束、异常处理、日志处理
    MPLS(多协议卷标交换)
  • 原文地址:https://www.cnblogs.com/huqi96/p/14392384.html
Copyright © 2020-2023  润新知