我們正在構建一個新的單頁前端以替換我們的Web應用程序的舊靜態html前端(帶有一些jquery)。在這樣做的時候,我們遇到了一個有關從api中獲得的對象類型的問題。在基於REST的Web應用程序中保留繼承的概念
當從我們的PHP後端將數據導出爲JSON時,我們包含一個額外的字段,我們在該字段中放置對象在導出之前所具有的類型。我們可以使用它來處理我們請求的資源的不同子類。
但是有時我們也想區分父類。考慮以下情形:
繼承樹:
Animal
Mammal
Human
Dog
...
Reptile
Crocodile
Snake
...
GET /動物/
[
{"_type": "Human", "id": 1, "food": "Ice Cream"},
{"_type": "Human", "id": 2, "food": "Steak"},
{"_type": "Human", "id": 3, "food": "Peanut Butter"},
{"_type": "Dog", "id": 4, "food": "Horse Poop"}
{"_type": "Crocodile", "id": 5, "food": "Humans"}
]
當我有一定的一塊UI,其中我想顯示所有的動物,但爲實例突出顯示所有我有問題的哺乳動物,因爲我已經失去了動物是哺乳動物的知識。
我們提出的最簡單的解決方案是在從後端導出對象時包含繼承鏈。可能是這樣的:
{
"_type": "Human",
"id": 10,
"food": "Ice Cream",
"_parentClasses": "Animal.Mammal.Human"
}
雖然我不認爲這是一個特別好的解決方案,它很容易實現和使用,似乎強大。
您認爲這是一個好的/好的/壞的主意,您是如何解決這個問題的?
這並不能解決我的問題,因爲我想獲取(並使用)完整的列表,但仍然需要知道對象具有哪些超類。 – martijnve 2013-03-20 14:12:42
我剛剛更新了我的文章,您可能會想要使用類似於上面的PHP代碼的東西。 – ilikemypizza 2013-03-20 14:15:30
@ilikemypizza我非常不喜歡你的更新方法。這需要類型和父類之間的硬編碼關係,或數據庫查找推斷的關係。這可能不是一個優雅的解決方案。 – 2013-03-20 14:16:17