使用Postman将对象数组发送到gRPC服务器

编程语言 2026-07-10

以下是我的消息定义,我现在在构建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_urlvalue 字段。value 字段包含由 type_url 指定的protobuf消息(本例中为Profile)序列化为其传输格式并进行base64编码。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章