grpcurl 是一个多平台可以用的,可以发送grpc请求到服务器的客户端工具,可以用于grpc服务器的各种测试和debug
列出一个grpc servert提供的所有服务(如果服务器没有添加TLS证书,需要使用-plaintext
参数)
grpcurl -plaintext localhost:6565 list
带参数请求,参数必须放在host地址前
grpcurl -d '{"first_name":"Tom","last_name":"Willson"}' -plaintext localhost:6565 list
请求时参数的顺序并不一定要跟proto文件中设定的一致,参数名一致了就行
此处-d
后面跟的必须是单个positional argument,如果使用windows的cmd和powershell,可能会产生各种解析问题,以下为powershell的正确范例
> grpcurl -d '{\"first_name\":\"Tom\",\"last_name\":\"Willson\"}' -plaintext localhost:6565 UserVerifyService/sayHello
{
"message": "Hello Tom Willson"
}
使用参数-authority
可以假装请求server为另一个,从而通过证书校验,在测试环境很管用
> grpcurl -d '{\"first_name\":\"Tom\",\"last_name\":\"Willson\"}' localhost:6565 UserVerifyService/sayHello
Failed to dial target host "localhost:6565": x509: certificate is valid for mila.lab, not localhost
> grpcurl -d '{\"first_name\":\"Tom\",\"last_name\":\"Willson\"}' -authority='mila.lab' localhost:6565 UserVerifyService/sayHello
{
"message": "Hello Tom Willson"
}
网友评论