我有一个节俭的结构

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/

    10-15 17:10