使用Postman将对象数组发送到gRPC服务器
以下是我的消息定义,我现在在构建profile列表时卡住了。
message ModelRescheduleQuoteRequest {
string security_token = 1;
optional string attribute_to_solve_for = 2;
com.myCompany.grpc.gateway.classes.ListValue profile_list = 3;
optional string quote_item_to_model_id = 4;
com.myCompany.grpc.gateway.classes.RescheduleQuote reschedule_quote = 5;
}
message ListValue {
repeated google.protobuf.Any values = 1;
}
message Profile {
optional int32 number_of_payments = 1;
optional double instalment_amount = 2;
optional string instalment_frequency_id = 3;
optional double instalment_ratio = 4;
com.myCompany.grpc.gateway.classes.Date payment_date = 5;
}
message Date {
optional int32 day = 1;
optional int32 month = 2;
optional int32 year = 3;
}
如果按下面的格式传入,值会在请求中原样传递,但显然我没法输入这种格式。
"profile_list": {
"values" : [{
"type_url": "type.googleapis.com/com.MyCompany.grpc.gateway.classes.Profile",
"value": "CgYzNjQ2OTEpA"
}]
},
我需要传递这个,但传入后它并没有被包含在请求中。
"profile_list": {
"values" : [{
"@type": "type.googleapis.com/com.MyCompany.grpc.gateway.classes.Profile",
"instalmentAmount": 123.45,
"instalmentFrequencyId": 123,
"instalmentRatio": 1.0,
"numberOfPayments": 1,
"paymentDate": {
"day": 1,
"month": 2,
"year": 2026
}
}]
},
编辑:如果没有办法把对象很好地传递,是否有办法生成编码后的字符串?
解决方案
带有 @type 的格式是Any消息的规范JSON表示形式,具体参考 此处,但Postman似乎不支持。
相反,Any被当作普通的protobuf消息处理,因此必须设置它的 type_url 和 value 字段。value 字段包含由 type_url 指定的protobuf消息(本例中为Profile)序列化为其传输格式并进行base64编码。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。