C# OData超媒体

C# OData超媒体,c#,asp.net-web-api,odata,C#,Asp.net Web Api,Odata,很久以前,当我第一次查看OData响应有效负载以获取包含指向其他实体或实体集的链接的请求时(例如,OrderHeader实体将包含指向订单OrderDetails的链接)。我认为正确的说法是超媒体 今天我再次签出OData,并使用ASP.NETWebAPI构建了ODataV4服务,但是在有效负载中没有返回这样的超媒体链接。为什么会这样?这是因为有效负载现在是JSON(而几年前我看到它是XML)吗?有没有办法在有效负载中包含超媒体链接 这是我建造的。我有一个被称为命题的实体: public cla

很久以前,当我第一次查看OData响应有效负载以获取包含指向其他实体或实体集的链接的请求时(例如,OrderHeader实体将包含指向订单OrderDetails的链接)。我认为正确的说法是超媒体

今天我再次签出OData,并使用ASP.NETWebAPI构建了ODataV4服务,但是在有效负载中没有返回这样的超媒体链接。为什么会这样?这是因为有效负载现在是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; }
}
公共类命题
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共字符串说明{get;set;}
公共ICollection事件{get;set;}
}
请注意,一个命题有一组事件。我希望当我通过OData端点请求一个建议时,我能获得到Events资源的链接,但我没有:

我在网站上找到一些信息,建议在URL中添加$format=odata.metadata=full将返回我需要的内容:

odata.metadata=full format参数表示服务必须在有效负载中显式地包含所有控制信息

()

但是我试过了,我没有得到任何这样的元数据(这次是邮递员的截图): 邮递员告诉我返回的是odata.metadata.minimal:


为什么它忽略了我对完整元数据的请求?

啊哈,搞定了。我错误地指定了URL。它需要是?$format=application/json;odata.metadata=full


感谢Stuart Preston的帮助:

您应该能够添加
$format=application/json;odata.metadata=full
到您的查询字符串,通过GET请求实现这一点