2014-12-02 71 views
0

我正在使用WCF-RESTAPI的API。我遇到了問題,我們的GET返回的子實體(數據契約)中包含的信息太多。我們決定改爲返回一個應該訪問的URL來獲取子實體。最佳實踐返回一個子數據合同作爲REST URL(REST API)

因此,例如;

{ 
    "date": "2014-12-01T00:00:00Z", 
    "contractor": { 
    "contractorReference": "DEFREF", 
    "contractorName": "Default Supplier", 
    "mainTelephone": "123456789", 
    "mainAddress": { 
     "fullAddress": "Default Supplier Street DefaultTown United Kingdom" 
    }, 
    "mainFax": null, 
    "webAddress": null, 
    "comment": null 
    }, 
    "moreinfo": "data" 
} 

會成爲像

{ 
    "date": "2014-12-01T00:00:00Z", 
    "contractor": "https://rest-api/contractor/{id}", 
    "moreinfo": "data" 
} 

有內置REST API或這樣做的標準方式什麼?我正在考慮創建可能命名爲「IsLinkable」數據合同屬性和系列化採摘這件事上的動作過濾器。不知道這是最好的解決方案。

+0

面臨同樣的問題。你找到解決方案嗎? – sam 2015-02-02 10:21:02

+0

看到我的答案,希望它幫助。 – Shorttylad 2015-03-04 12:27:32

回答

0

我沒有發現什麼內置框架,將做到這一點框出來..我通過用字符串屬性替換子數據合約來保存URL的問題。這些將通過數據合同本身的反射和屬性來構建。

即,我有一個財產,持有我在屬性中與路線​​..(例如用戶/ {id})一起指定的子實體的唯一標識符(例如UserId)。然後我建立一個動作過濾器,其將執行剛剛返回填充的數據契約給用戶之前,這將生成使用上述方法的URL。