繁体   English   中英

组织Master-Detail控制器ASP.Net Web API

[英]Organizing Master-Detail Controllers ASP.Net Web API

我正在尝试根据主人的ID确定实现详细记录检索的最佳方法。

显然,您将为master和detail设置API控制器。

我考虑过的解决方案:

  • 让API使用者使用OData来获取由主ID过滤的所有详细信息。 虽然我对这个解决方案没有任何问题,但我觉得把它放到API使用者身上并感觉它应该由API内部处理
  • 违反只有Get / Put / Post / Delete方法的惯例,并在详细控制器上创建“GetMastersDetails”操作,并通过路由访问它。 虽然这肯定会起作用,但我觉得这远离了Web API的整个过程(在某种程度上)。
  • 创建一个名为“MastersDetailsController”的第三个控制器,它将具有基于具有不同可能返回类型的主ID的Get:
    • 这将返回一个详细ID列表,然后将其用于调用详细信息控制器上的Get以获取这些实际详细信息
    • 这将返回实际细节对象的列表。 我不喜欢的是控制器返回的类型不同于它所基于的类型。

我会选择#1或#2。

对于#1,OData支持不仅可以实现您描述的场景,还可以提供将来可能需要的许多附加功能。

对于#2,我认为它不会脱离Web API的角度。 也许有点来自真正的RESTful服务,但它易于实现且易于理解。

选项2没问题。 选项1会根据您的方案以及您希望用户获得的内容开辟更多风险。

向ApiController添加自定义方法并不是“违反惯例”。 你可以随心所欲地做到这一点。 如果您这样做并且使用了错误的HTTP方法(即在您的自定义方法中删除某些内容时为GET),它将只是“违反惯例”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM