iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 7
0

上一篇我們已實作gRPC server,接下來我們開始實作與server溝通的gRPC client程式。

Client

var grpcClient pb.MyprotoServiceClient

func main() {
	//GRPC 連線
	grpconn, err := grpc.Dial(":8081", grpc.WithInsecure())
	if err != nil {
		log.Fatalf("grpc create error: %v", err)
	}
	defer grpconn.Close()
	grpcClient = pb.NewMyprotoServiceClient(grpconn)

	AddUser("test", "0000")
	LoginUser("test", "0000")
	UserList()
}

func AddUser(username, userpwd string) {
	res, err := grpcClient.AddUser(context.Background(),
		&pb.UserRequest{
			UserName: username,
			UserPwd:  userpwd,
		})
	if err != nil {
		log.Fatalf("AddUser Error: %v", err)
	}
	fmt.Println(res)//執行結果
}

func LoginUser(username, userpwd string) {
	res, err := grpcClient.LoginUser(context.Background(),
		&pb.UserRequest{
			UserName: username,
			UserPwd:  userpwd,
		})
	if err != nil {
		log.Fatalf("LoginUser Error: %v", err)
	}
	fmt.Println(username, res.Result) //執行結果
}

func UserList() {
	res, err := grpcClient.UsersList(context.Background(), &pb.UsersListRequest{})
	if err != nil {
		log.Fatalf("UsersList Error: %v", err)
	}
	fmt.Println(res.UserName) //執行結果
}

以上就是一個簡單的gRPC client實作。

gRPC curl

grpcurl是一個命令工具,可以透過terminal呼叫gRPC,grpcurl是使用JSON格式傳送訊息,可以透過grpcurl來呼叫proto方法,以便檢查gRPC服務是否正確。

✗ grpcurl -plaintext -d '{"user_name":"a001","user_pwd":"0000"}' 127.0.0.1:8081 mypb.MyprotoService/AddUser;
{
  "result": "ok"
}

✗ grpcurl -plaintext -d '{"user_name":"a001","user_pwd":"0000"}' 127.0.0.1:8081 mypb.MyprotoService/LoginUser;
{
  "result": "ok"
}

✗ grpcurl -plaintext 127.0.0.1:8081 mypb.MyprotoService/UsersList;
{
  "result": "ok",
  "userName": [
    "a001"
  ]
}

上一篇
Day6 gRPC (2) Server
下一篇
Day8 日誌記錄-logrus
系列文
微服務系統建置與監控30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言