zoukankan      html  css  js  c++  java
  • 10.调用http api:引入protobuf、生成参数和响应模型

    调用http api:引入protobuf、生成参数和响应模型,定义proto文件

    syntax = "proto3";
    package Models;
    
    message ProdModel {
        // @inject_tag: json:"pid"
        int32 ProdID = 1;
        // @inject_tag: json:"pname"
        string ProdName = 2;
    }
    
    message ProdRequest {
        int32 size = 1;
    }
    
    message ProdListResponse {
        repeated ProdModel data = 1;
    }

    根据proto文件生成pb文件

    protoc --micro_out=../ --go_out=../ Prods.proto

    在客户端中使用生成的pb文件中的model去请求服务端

    package main
    
    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"
        "go-micro/Models"
        "log"
    )
    
    func callAPI(s selector.Selector) {
        myCli := myhttp.NewClient(
            client.Selector(s),
            client.ContentType("application/json"),
        )
        req := myCli.NewRequest("prodservice", "/v1/prods", Models.ProdRequest{Size: 2}) //使用生成的pb文件中的结构体作为参数封装到请求体中
    
        var resp Models.ProdListResponse  //使用生成的响应体去解析服务端返回数据
        err := myCli.Call(context.Background(), req, &resp)
        if err != nil {
            log.Fatal(err)
        }
        fmt.Println(resp)
    }
    
    func main() {
        consulReg := consul.NewRegistry(
            registry.Addrs("localhost:8500"),
        )
        mySelector := selector.NewSelector(
            selector.Registry(consulReg),
            selector.SetStrategy(selector.RoundRobin), //设置查询策略,这里是轮询
        )
        callAPI(mySelector)
    }
    




  • 相关阅读:
    Block的强强引用问题(循环引用)
    自己封装的下载方法
    MJRefresh上拉刷新下拉加载
    JavaScript 模块的循环加载
    webpack使用require注意事项
    console.log高级用法
    path.resolve()和path.join()的区别
    深入理解react
    react children技巧总结
    揭秘css
  • 原文地址:https://www.cnblogs.com/hualou/p/12103688.html
Copyright © 2011-2022 走看看