• 22.使用Micro为我们的rpc服务创建http api网关


    使用Postman去点对点调用我们之前写的service,header中设置Content-type是application/json,发送如下图的json数据即可。json指定了jsonrpc,指定了调用的endpoint

    启动grpc server

    package main
    
    import (v
        "github.com/micro/go-micro"
        "github.com/micro/go-micro/registry"
        "github.com/micro/go-micro/registry/etcdv3"
        "github.com/micro/go-plugins/registry/consul"
        "micro/Services"
        "micro/ServicesImpl"
    )
    
    func main() {
        consulReg := consul.NewRegistry(registry.Addrs("localhost:8500"))
        etcdReg := etcdv3.NewRegistry(registry.Addrs("106.12.72.181:23791"))
        myservice := micro.NewService(
            micro.Name("api.xiahualou.com.test"), //这里在namespace的基础上多加了一个test,在下面会讲解到这个.test的作用
            micro.Address(":8001"),
            micro.Registry(etcdReg),
            micro.Registry(consulReg),
        )
        Services.RegisterTestServiceHandler(myservice.Server(), new(ServicesImpl.TestService))
        myservice.Run()
    }

    为服务设置网关之后,就可以使用简单的http请求 只发送json获取数据了,新版本的micro已經不支持consul了

    我们需要在下载好的$GOPATH/src/github.com/micro/micro 下新建plugins.go文件

    package main
    
    import (
        _ "github.com/micro/go-plugins/registry/etcdv3"
    )

    然后使用go build -i -o micro ./main.go ./plugins.go重新编译生成micro.exe然后拷贝到$GOBIN目录下,执行批处理文件中的命令或者直接执行,micro api从环境变量中读取配置

    set MICRO_REGISTRY=etcdv3 #新版本micro工具已经不支持consul,我们这里使用consul
    set MICRO_REGISTRY_ADDRESS=106.12.72.181:23791
    set MICRO_API_NAMESPACE=api.xiahualou.com #这里是命名空间 我们注册的sevice是api.xiahualou.com.test
    set MICRO_API_HANDLER=rpc #支持api event http rpc
    micro api # 启动网关

    网关默认关口是8080,这里访问的路径就是localhost:8080/test/TestService/call,网关会接收到请求并转发给rpc server





  • 相关阅读:
    Android 密匙库导出
    Android常用布局
    asp.net hessian + android hessdroid
    Android文件上传
    android,gridview
    Android文件下载
    Andriod 之数据获取
    java类的泛型DAO
    Spring之AOP编程
    mysql中如何统计某字段里某个字符的个数
  • 原文地址:https://www.cnblogs.com/hualou/p/12142284.html
Copyright © 2020-2023  润新知