我对golang和grpc不熟悉,需要指导和澄清。我下面定义了一个参数,用于调用外部API的POST请求。
params := map[string]string{
"movie": movie,
"seat": seat,
"pax": fmt.Sprint(pax),
"class": class,
}
在proto文件中,我有如下:
message TicketData {
string movie= 1;
string seat= 2;
uint32 pax= 3;
string class = 4;
}
message SearchMovieRequest {
TicketData data= 1;
}
然而,在POSTMAN (grpc请求)中,请求体如下所示:
{
"data":
{
"movie": "abc",
"seat": "123",
"pax": 2,
"class ": "b""
}
}
请求正文应该在下面:
{
"data": **[**
{
"movie": "abc",
"seat": "123",
"pax": 2,
"class ": "b""
}
**]** - missing brackets in my json body
}
我已经尝试使用structpb和映射字符串接口。这似乎行不通。任何指示将不胜感激。谢谢你。
您希望data
字段为repeated TicketData
参见《Protobuf语言指南(proto3)》中的指定字段规则。
专:
message TicketData {
string movie= 1;
string seat= 2;
uint32 pax= 3;
string class = 4;
}
message SearchMovieRequest {
repeated TicketData data= 1;
}
注意尽管您包含了protobuf定义,但您的示例是JSON。Protobuf实现通常包括Protobuf和JSON之间的自动映射,我想这就是你所展示的。