models/protos/prod.proto
syntax = "proto3";
package models;
option go_package = "想要存放proto.pb.go和proto.pb.micro.go的目录";
message ProdModel {
int32 ProdID = 1;
string ProdName = 2;
}
message ProdRequest {
int32 size = 1;
}
message ProdListResponse {
repeated ProdModel data = 1;
}
终端输入(需先go get github.com/micro/protoc-gen-micro,并生成protoc-gen-micro.exe放入工作目录的bin下)
protoc --go_out=.. --go_opt=paths=source_relative prod.proto
protoc --micro_out=.. --micro_opt=paths=source_relative prod.proto
在models目录下分别生成prod.pb.go和 prod.pb.micro.go
修改consul_test.go
func callAPI2(s selector.Selector) {
microClient := microHttp.NewClient(
client.Selector(s),
client.ContentType("application/json"),
)
req := microClient.NewRequest("prodService", "/v1/prods", models.ProdRequest{Size: 6})
var resp models.ProdListResponse
err :=microClient.Call(context.Background(),req, &resp)
if err != nil {
log.Fatalln(err)
}
fmt.Println(resp.GetData())
}
开启服务,并测试,终端输出
=== RUN TestConsul2
[ProdID:100 ProdName:"ProdName100" ProdID:101 ProdName:"ProdName101" ProdID:102 ProdName:"ProdName102" ProdID:103 ProdName:"ProdName103" ProdID:104 ProdName:"ProdName104" ProdID:105 ProdName:"ProdName105"]
--- PASS: TestConsul2 (0.08s)
PASS
Process finished with the exit code 0