我们拥有用于移动电话的电子商务网站。我们正在建立宁静的API,POST,PUT,DELETE,UPDATE手机。REST API设计:如何分解API对象以使其更具可扩展性和可靠性API
每款手机都具有以下基本功能: - 价格,制造商,制造年份,颜色,折扣。
与此同时,大多数手机也会有图像。
此外其中几个有制造商保修。可以说他们中的50%。
而且很少有手机可以提供融资选择,例如我们已经与某些银行合作以便为这些贷款提供贷款。几乎80%将有这个设施。
我们决定设计API此两种方法:
方法1.所有这些在同一个JSON对象。只有一个API如:
{
"basicInfo": {
"price": "",
"mfgYear": "",
"manufacturer": ""
...
},
"images":{...},
"warranty":{...},
"finance":{...}
}
方法2.将所有这些JSON对象分开。例如:
First Api for "basicInfo".
Second Api for "images".
Third Api for "warranty".
Fourth Api for "finance"
我能想出每个几利弊:
APPROACH1: 优点:我们相聚在服务器上的所有库存信息。这意味着更少的API命中,更少的服务器负载。此外,将来如果我们实施一些队列处理以将这些股票信息保存到数据库中,则在将股票插入数据库之前不会发布图像/保修/财务的情况,因为我们将所有信息放在一起。因此,我们首先将库存插入数据库,然后将记录插入到具有外键关系的其他表中。 缺点:此API /资源有多重责任。它会变得越来越大,将来可能会在这个API中有太多的领域。此外,这看起来像违反单一责任原则给我。
APPROACH2: 优点:这看起来有点清洁和有组织。看起来每个API都有自己的职责定义。看起来可以扩展到我。如果在一个API中进行更改,则不太可能影响其他API。 缺点:服务器上的API点击次数更多。在股票发布前发布股票依赖资源的可能性更大。例如,我们可能在插入股票之前出队图像。
方法3。给出这两个选项。允许使用基本信息发送其他信息的示例以及为这些资源创建单独的API。
哪种方法最好,即更安宁,可扩展,性能更好?
那么post呢?我想你已经回答了。帖子应该分开还是我们应该只给一个Api? – maverick
@sahil你真的希望客户通过'POST'来更新'/ phones'的保修吗?这对我来说似乎是个坏主意。我会想象,多个手机将分享保修。同样,如果供应商和产品线相同,则对于多个分立电话来说,融资信息可能是相同的。要求客户更新这些东西以分开进行。 –
每部手机都会有不同的EMI金额,任期和将提供此服务和其他几个领域的银行名称。现在,我们应该使财务信息的一部分,电话api发布或保持它作为单独的资源? – maverick