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