2015-05-20 49 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请求实现这一点。