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






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM