2013-02-16 26 views
2

在ASP.NET Web Api中提供資源的最佳方式是什麼?他們是否有任何參考或準則?Web Api端點複雜對象vs簡單平面對象最佳實踐

可以說例如我們有一個人。

選項1:

{ 
    "Personalia": { 
    "CitizenServiceNumber": "23443342", 
    "FirstName": "John", 
    "LastName": "Web", 
    "Gender": "Male", 
    "DateOfBirth": "1965-02-16", 
    }, 
    "Spouse": { 
    "FirstName": "Emily", 
    "LastName": "Web", 
    "Gender": "Female", 
    "DateOfBirth": "1968-02-16" 
    }, 
    "Address": { 
    "HouseNumber": "565", 
    "Street": "Somewherestreet" 
    } 
} 
  • 可以很容易地閱讀
  • 精讀我們需要多種類型/型號(人,Personalia,配偶,地址)來GET/POST /把一個人

選項2:

{ 
    "CitizenServiceNumber": "23443342", 
    "FirstName": "John", 
    "LastName": "Web", 
    "Gender": "Male", 
    "DateOfBirth": "1965-02-16", 
    "SpouseFirstName": "Emily", 
    "SpouseLastName": "Web", 
    "SpouseGender": "Female", 
    "SpouseDateOfBirth": "1968-02-16", 
    "HouseNumber": "565", 
    "Street": "Somewherestreet" 
} 
  • 我們只需要1級
  • 精讀它的可讀性/結構,特別是對教學班,更多的數據

這是ofcourse一個一個相當簡單的例子,但問題仍然與更復雜的類相同。

回答

3

我會去第一個選項。你不應該擔心有很多對象。這些被稱爲視圖模型,並且完全用於此目的。除此之外,您可以在API的其他部分重用這些對象的某些部分,您可能需要諸如地址,人物之類的東西......

如果仔細看看這個JSON字符串,您實際上並不需要PersonPersonaliaSpouse對象來映射此結構。一個Person對象就足夠了。

例如,以下是如何,你的API控制器動作發生的視圖模型可能看起來像:

public class MyViewModel 
{ 
    public PersonViewModel Personalia { get; set; } 
    public PersonViewModel Spouse { get; set; } 
    public AddressViewModel Address { get; set; } 
} 
+0

你好達林,我明白,我可以做1 Person類/視圖模型暴露多個對象。我主要關心的是想要通過使用API​​添加新人的依賴方。在這種情況下,他們仍然需要一個人/配偶/地址和人員。只需添加1人。 (比方說,我們希望保存更多關於該人的個人資料,然後保存配偶,所以他們不適合一個班級)。從依賴方的角度來看,你是否仍然有同樣的觀點? – 2013-02-16 16:02:03

+0

如果您需要更多的數據,您只需從PersonViewModel類派生出來並添加新的屬性即可。 – 2013-02-16 16:05:01

+0

我同意你的看法,如果我只是自己製作一個MVC應用程序,這將是最好的方法。但是,如果我們有依賴數據並需要發佈/發佈/發佈的數據,那麼你認爲這也是最好的方法嗎?現在他們還需要進行這個課程,您對這個依賴方的觀點有什麼看法。 – 2013-02-16 16:10:28