我們擁有用於移動電話的電子商務網站。我們正在建立寧靜的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