Odata Web API 2 响应中缺少元数据格式

本文关键字:数据格式 响应 Web API Odata | 更新日期: 2023-09-27 18:31:13

我有一个 web api 2 项目,并希望将模型公开为 Odata 服务,以便它可以查询。

这是我完成的设置:在WebApiConfig.Register()我有

config.AddODataQueryFilter();

以下代码位于值控制器中

// GET api/values
[EnableQuery (PageSize=1)]
public IQueryable<TestProduct> Get()
{
    var str = new List<TestProduct>
    {
        new TestProduct {Name = "Dark", Value = "Lord"},
        new TestProduct {Name = "Dark", Value = "Elf"}
    };
    var hello = str.AsQueryable();
    return hello;
}

当我查询时

http://localhost:51823/api/values?$filter=Name eq 'Elf'

我得到的结果是:

[
    {
        "Name": "Dark",
        "Value": "Elf"
    }
]

我缺少$odata.metadata属性和inlinecount属性。我怎样才能将其添加到响应中。理想情况下,我会寻找:

    [
 "odata.metadata":"http://localhost:43111/api/$metadata#TestProducts",
            "odata.count":"1",
"value":
        {
            "Name": "Dark",
            "Value": "Elf"
        }
    ]

我不打算使用 EF。

Odata Web API 2 响应中缺少元数据格式

试试这个:

http://localhost:51823/api/values?$filter=Name eq 'Elf'&$inlinecount=allpages

要获取元数据信息,请将 odata=fullmetadata 添加到接受标头,例如:

Accept:application/json;odata=fullmetadata