【问题标题】:JSON: "type" field or dynamic fields?JSON:“类型”字段还是动态字段?
【发布时间】:2018-09-15 11:20:24
【问题描述】:

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

例如,假设我们要设计一个处理帐户恢复的 API。它可以通过电子邮件或短信(后端的不同逻辑)来完成。

所以如果我们想向这个 API 发送一个请求,我们可以动态地处理它,即客户端发送:

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

{"phone":"+123456789"}

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

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

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

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

【问题讨论】:

  • 如果有可能发送其中一个而不发送另一个,那么第二个更好,但如果每次都发送,那么第一个更好。

标签: json api-design


【解决方案1】:

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

  1. 看看 Typescript。在某些情况下,它可能会对您有所帮助。
  2. 严格的 API 验证,JSON-Schema 非常棒。您可以轻松地表达两个示例并严格验证。

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

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

mailto:foo@example.org
tel:+15551234567

【讨论】:

    猜你喜欢
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 2011-02-03
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多