亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

返回消息列表

返回消息列表

Go
揚帆大魚 2022-04-26 14:34:10
鑒于我有多個模型,每個模型都需要有自己的創建/獲取/獲取列表 API。我是否需要為每個模型添加兩種不同類型的消息(單個和列表)?例如:如果我有一個學生類型 -message Student{    string name = 1;}和一個RPC:rpc CreateStudent(Student) returns (google.protobuf.Empty){         ..............    }如果我想添加一個 rpc 來創建學生列表,或者獲取學生列表rpc CreateStudends(??????) returns (google.protobuf.Empty){             ..............    }rpc GetAllStudents() returns (??????){         ..............    }我是否還需要定義message StudentList{   repeated Student students = 1;}或者有沒有辦法在消息輸入/輸出中直接使用列表類型?
查看完整描述

2 回答

?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

是的,基本上 - 您會希望每個元素類型有不同的消息類型,或者可能需要具有oneof樣式內容的單個根類型。原始 protobuf 不包含泛型或模板的概念。

一些庫可以,但是:這超出了規范。


查看完整回答
反對 回復 2022-04-26
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

您可以簡單地將stream關鍵字添加到您的 RPC。無需將消息字段定義為重復,stream將發送或接收多個獨立消息。


message Student {

    string name = 1;

}

使用 RPC:


rpc CreateStudent(Student) returns (google.protobuf.Empty) {

         ..............    

}


rpc CreateStudents(stream Student) returns (google.protobuf.Empty) {

             ..............    

}


rpc GetAllStudents() returns (stream Student) {

         ..............    

}

發送/流式傳輸響應對象而不是空的是一種很好的做法。否則,您只有 gRPC 響應代碼來指示問題,并且需要參考日志進行調試。


查看完整回答
反對 回復 2022-04-26
  • 2 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號