在 ASP.NET WebApi 中路由相关实体的最佳实践是啥

Posted

技术标签:

【中文标题】在 ASP.NET WebApi 中路由相关实体的最佳实践是啥【英文标题】:What is the best practice to route related entities in ASP.NET WebApi在 ASP.NET WebApi 中路由相关实体的最佳实践是什么 【发布时间】:2015-11-21 13:43:13 【问题描述】:

我正在使用具有链接实体的 WebApi 应用程序中的实体。 例如:

Entity Street 有以下相关资源:City 实体City 具有:RegionCityType 实体Person:Address,Nationality,Position,Catalog,Documents...

如何正确路由相关实体?

在我使用 OData 请求之前,例如:http://localhost:3761/api/City?$expand=CityType,Region 用于 Cityhttp://localhost:3761/api/Person?$expand=Address,Nationality,Documents,Catalog 用于 Person。 但是大多数客户不知道哪些存在相关对象。他们想添加一些参数来请求将获得所有链接数据的实体。 http://localhost:3761/api/Person/fullhttp://localhost:3761/api/Person/2/full 的示例为具有 ID = 2 的人。

我试图实现它但是I have problem with routing。 因此,由于我有一个基本 api 控制器,因此属性不会继承到我的子控制器,因此它不起作用。

您能否建议我路由相关实体的最佳做法是什么?

P.S: 对不起我的英语,如果有什么不清楚的地方请告诉我。 谢谢

【问题讨论】:

谁能帮助我?请至少写评论 我需要你的帮助。请 【参考方案1】:

看看 Trello 如何组织他们的 API Trello API

它们允许一个级别的透视和声明您感兴趣的数据类型的可能性。除非您从有效列表中指定字段列表,否则您会返回默认字段。

示例: GET: api/1/cards/card id/members (Options)

在你的情况下,这会变成这样:

http://localhost:3761/api/people/2?&fields=address,nationality,position,catalog

【讨论】:

谢谢,但我知道返回字段很热门。我询问相关实体(对象中的对象)。我发现了类似的问题***.com/questions/32620089/…。但是没有答案可以帮助我 在我的情况下 api/Person?$expand=Address,Nationality,Documents,Catalog 不是字段,这是相关实体(使用导航属性作为外键)

以上是关于在 ASP.NET WebApi 中路由相关实体的最佳实践是啥的主要内容,如果未能解决你的问题,请参考以下文章

如何在 POST 正文中为 asp.net WebAPI POST 路由格式化 XML

asp.net webapi 2属性路由不起作用

ASP .NET WebAPI 路由数据架构

ASP.NET WebAPI 中的路由冲突

Web API系列教程2.1 — ASP.NET Web API中的路由机制

[Asp.Net WebApi]WebApi入门