序列化具有相同类型(编程方式)但具有不同“含义”和应该处理该逻辑的逻辑的互斥数据的最佳实践是什么?
作为一个例子,假设我们要设计一个用于处理帐户恢复的API。可以通过电子邮件或SMS(后端上的不同逻辑)来完成。
因此,如果我们要对此API编写请求,则可以动态处理该请求,即客户端发送:
{"email":"my@email.com"}
或
{"phone":"+123456789"}
或者,我们设置一个“类型安全”的json,即:
{"type":"email", "value":"my@email.com"}
或
{"type":"phone", "value":"+123456789"}
这两种方法中的哪种被认为是更好的做法?
答案 0 :(得分:1)
这完全取决于您的用例,但是我可以提出一些建议:
我个人不会使用单独的“类型”字段,因为电子邮件/电话属性的存在已经暗示了该类型,并且处理总是相同类型的属性更加容易。
但是,如果我要设计一个可以在字段中显示电子邮件或电话的API,那么我可能会使用URI代替:
mailto:foo@example.org
tel:+15551234567