我在本地创建了一个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”,我只需要json for myapp。
我该如何解决这个问题? 这方面的OData信息太小,我的英语不好。 而且我不理解“@ odata.type”用于。
如果你能给我一些帮助,我将永远感激不尽。
答案 0 :(得分:0)
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;