最佳实践设计类型化的JSON对象

问题描述 投票:0回答:1

目前我们正在设计一个系统,将JSON对象发送给注册的消费者。消费者可以注册他们想要接收的不同对象类型。目前我们正在设计JSON对象,这些对象将被注册的消费者消费。

我们看到有两种可能的方法来定义类型化的JSON对象。

  1. 一个通用的JSON对象,它已经设置了一些属性,或者它没有设置这些属性。
{
  "timestamp": 1589448935,
  "customer_id": "123123123123",
  "message": {
    "title": "Desired Title",
    "text": "The Text of the Message",
  }
}
{
  "timestamp": 1589448935,
  "customer_id": "123123123123",
  "message": {
    "title": "Desired Title",
    "text": "The Text of the Message",
    "avatar": "http://avatar.io/avatar"
  }
}
  1. 每个JSON对象上都有一个Type字段,指定这个对象来自哪个类型。
{
  "timestamp": 1589448935,
  "customer_id": "123123123123",
  "type": "simple_message",
  "message": {
    "title": "Title",
    "text": "Message",
  }
}
{
  "timestamp": 1589448935,
  "customer_id": "123123123123",
  "type": "avatar_message",
  "message": {
    "title": "Title",
    "text": "Message",
    "avatar": "http://www.avatar.io/avatar"
  }
}

从我们的角度来看,一个更通用的方法会更容易在我们的系统中处理,因为我们不需要处理多个类型,我们只需要附加一个属性或者不附加它。

从开发者的角度来看,我可以想象一个类型字段可以帮助开发者处理这样的对象(例如,将它们映射到对象上),或者打开类型字段来执行一些特定的逻辑。

最后,对于我的问题--当我们想让消费者的生活尽可能的简单时,哪种风格是首选(最佳实践),为什么?对于类型化的json对象,是否有一个最佳实践的方法?

json api rest design
1个回答
1
投票

如果你设置的是一个通用的applicationjson响应,那么我会选择你的选项#2.那个 "类型 "没有什么坏处,只能帮助澄清那个响应是什么。

© www.soinside.com 2019 - 2024. All rights reserved.