gpt4 book ai didi

odata - 为什么我的 OData 返回数据包含 "@odata.type"?

转载 作者:行者123 更新时间:2023-12-05 06:43:02 27 4
gpt4 key购买 nike

我在本地创建了一个 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.type 是您请求资源的命名空间.typename,删除它作为响应添加请求中的 header 可以解决这个问题:

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;

关于odata - 为什么我的 OData 返回数据包含 "@odata.type"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34868239/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com