【发布时间】:2017-06-07 10:52:57
【问题描述】:
我们有一个案例,我们有一个休息端点,响应将根据应用程序流而有所不同。 json 中的属性会有所不同,所以问题是我们是否想要一个包含 json 的响应,该响应会根据应用程序的流而具有不同的结构。
正如我现在所看到的,我们基本上有三个选择。我们可以有两个属性,其中一个总是为空(客户或业务客户):
{
"data": {
"target": "Business",
"customer": null,
"businessCustomer": {
....
}
}
{
"data": {
"target": "Customer",
"customer": {
....
},
"businessCustomer": null,
}
或者我们将只有一个属性,其中该 json 对象的内容会有所不同(始终填充客户):
{
"data": {
"target": "Customer or business",
"customer": {
....
}
}
我认为仅使用一个属性可能很难使用数据。您将如何在强类型语言中以流畅的方式对其进行序列化...
哪种方式最好?提前致谢!
【问题讨论】:
-
customer和businessCustomer是两个独立的实体吗? -
为不同类型的请求创建新调用。不要混淆您的数据类型。将它们分开,因为它们是不同的。如果你把它混合起来,那么下一步呢?当您有不同类型的调用要实施时,您是否会一直混淆?
-
我认为您的 REST API 不应该根据消费者的行为来改变其响应 - 它应该是不可知的。
-
如果您的 Customer 和 BusinessCustomer 实体相似并且可以从基类派生,那么 stackoverflow.com/questions/6348215/… 可能会有所帮助?
-
是的,我会这么说,但从技术上讲,他们可以共享一个基类@Tom