【问题标题】:Why does my OData return data contain "@odata.type"?为什么我的 OData 返回数据包含“@odata.type”?
【发布时间】:2016-01-19 03:54:26
【问题描述】:

我在本地创建了一个 OData 应用程序。 并且请求地址是“http://localhost:5182/odata/Users

 [EnableQuery]
    public IHttpActionResult GetUsers()
    {
        var result = userService.GetQueryable().ProjectTo<UserModel>();
        return Ok(result);
    }

现在,如果我询问 ViewModel,返回的数据将包含“@OData.type” 像这样:

{
"@odata.context": "http://localhost:5182/odata/$metadata#Users/MyApp.WebApiOData.Models.UserModel",
"value": [
    {
        "@odata.type": "#MyApp.WebApiOData.Models.UserModel",
        "Id": 1,
        "Name": "admin",
        "PhoneNumber": null
    },
    {
        "@odata.type": "#MyApp.WebApiOData.Models.UserModel",
        "Id": 2,
        "Name": "mapley",
        "PhoneNumber": null
    }

}

如果我不要求 ViewModel,返回的数据会是这样的:

{
"@odata.context": "http://localhost:5182/odata/$metadata#Users",
"value": [
    {
        "Name": "admin",
        "Pwd": "123456",
        "RealName": null,
        "Sex": null,...

我不想返回结果包含“@OData.type”,并且Url地址包含“MyApp.WebApiOData.Models”,我只需要myapp的json。

我该如何解决这个问题? 这方面的OData资料太少了,我的英文也不好。 而且我不理解用于的“@odata.type”。

如果你能给我一点帮助,我将永远感激不尽。

【问题讨论】:

    标签: odata


    【解决方案1】:

    odata.type 是您请求资源的 namespace.typename,若要删除此响应,请在请求中添加标头可以解决此问题:

    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, queryUrl);
    request.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/json;odata.metadata=none"));                  
    HttpClient client = new HttpClient();
    HttpResponseMessage response = client.SendAsync(request).Result;
    

    【讨论】:

      猜你喜欢
      • 2020-10-12
      • 1970-01-01
      • 2022-08-24
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多