我有一个节俭的结构
struct Message {
1: optional int userID;
...
}
将其更改为默认需求是否安全?
struct Message {
1: int userID;
...
}
如果我知道它总是被设置?那“必需”呢?
答案 0 :(得分:1)
如this answer所述,Thrift中有3个等级(所谓的)需求:
required
:必须在读取时存在,必须在写入时设置optional
:可以设置或可以不设置,完全可选null
指针)要回答的问题:
可以安全地将optional
更改为默认值(即删除optional
关键字)。
将optional
更改为required
可能会破坏兼容性。除非您确定所有客户端/服务器都进行了相应的更新,否则较旧的一方可能不会为该字段提供值。在这种情况下,另一端将拒绝输入请求或响应为不完整,因为接收到的数据中缺少required
字段。
要进一步阅读该主题,您可能需要咨询Diwaker Gupta强烈推荐的“ Missing Guide”。