2015-05-20 85 views
1

很久以前,當我第一次查看OData響應有效負載時,GET請求包含指向其他實體或實體集的鏈接(例如OrderHeader實體將包含指向OrderDetails的鏈接)。我相信正確的術語是超媒體。OData超媒體

今天我再次檢查OData,並使用ASP.Net Web API構建了一個OData v4服務,但是沒有這樣的超媒體鏈接正在返回有效載荷中。爲什麼是這樣?是因爲有效載荷現在是JSON(而當我幾年前看起來它是XML)?有沒有什麼辦法在有效負載中包含超媒體鏈接?

這是我所建的。我有一個名爲命題的實體:

public class Proposition 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public ICollection<Event> Events { get; set; } 
} 

請注意,命題包含事件集合。我希望,當我要求通過OData的終點,我會得到一個鏈接到活動資源命題,但我不: enter image description here

我發現了一些信息,在那OData JSON Format Version 4.0 Plus Errata 02#JSON Format Design建議加入$格式= odata.metadata =完整的URL將返回我需要什麼:

的odata.metadata =全格式參數表明該服務必須明確包括在有效載荷

odata.metadata=full)的所有控制信息

,但我已經試過了,我不取回任何這樣的元數據(截圖自郵差這段時間): enter image description here 郵差表明我得到了回來什麼odata.metadata.minimal:

enter image description here

爲什麼它忽略了我對全部元數據的請求?

回答

3

您應該能夠添加$format=application/json;odata.metadata=full到您的查詢字符串來通過GET請求實現這一點。