JSON:“类型”字段还是动态字段?

时间:2018-09-15 11:20:24

标签: json api-design

序列化具有相同类型(编程方式)但具有不同“含义”和应该处理该逻辑的逻辑的互斥数据的最佳实践是什么?

作为一个例子,假设我们要设计一个用于处理帐户恢复的API。可以通过电子邮件或SMS(后端上的不同逻辑)来完成。

因此,如果我们要对此API编写请求,则可以动态处理该请求,即客户端发送:

{"email":"my@email.com"}

{"phone":"+123456789"}

或者,我们设置一个“类型安全”的json,即:

{"type":"email", "value":"my@email.com"}

{"type":"phone", "value":"+123456789"}

这两种方法中的哪种被认为是更好的做法?

1 个答案:

答案 0 :(得分:1)

这完全取决于您的用例,但是我可以提出一些建议:

  1. 看看打字稿。在某些情况下可能会为您提供帮助。
  2. 严格地进行API验证,JSON-Schema很棒。您可以轻松地表达两个示例并严格验证。

我个人不会使用单独的“类型”字段,因为电子邮件/电话属性的存在已经暗示了该类型,并且处理总是相同类型的属性更加容易。

但是,如果我要设计一个可以在字段中显示电子邮件或电话的API,那么我可能会使用URI代替:

mailto:foo@example.org
tel:+15551234567