asp.net - 组织主从 Controller ASP.Net Web API

标签 asp.net asp.net-web-api

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

显然,您需要为主数据和详细数据设置 API Controller 。

我考虑过的解决方案:

  • 让 API 使用者使用 OData 来获取按主 ID 过滤的所有详细信息。虽然我对此解决方案没有意见,但将其交给 API 使用者有点感觉不好,并且觉得它应该由 API 内部处理
  • 违背仅具有 Get/Put/Post/Delete 方法的惯例,并在详细信息 Controller 上创建“GetMastersDetails”操作,并使其可通过路由进行访问。虽然这肯定可行,但我觉得这(在某种程度上)偏离了 Web API 的全部意义。
  • 创建一个名为“MastersDetailsController”的第三个 Controller ,该 Controller 将基于具有不同可能返回类型的主 ID 进行 Get:
    • 这将返回详细信息 ID 列表,然后使用该列表调用详细信息 Controller 上的 Get 来获取这些实际详细信息
    • 这将返回实际详细对象的列表。我不喜欢的是 Controller 返回的类型与其所基于的类型不同。

最佳答案

选项 2 就可以了。根据您的场景以及您希望用户了解的内容,选项 1 会带来更大的风险。

向 ApiController 添加自定义方法并不是真正的“违反惯例”。您可以随心所欲地这样做。如果您这样做并使用了错误的 HTTP 方法(即,当您在自定义方法中删除某些内容时使用 GET),那只会是“违反约定”。

关于asp.net - 组织主从 Controller ASP.Net Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13418934/

相关文章:

asp.net - 处理样式表

c# - 将上传的 xml 文件加载到 XmlDocument 对象中

asp.net-mvc - 当 Web API 返回 IQueryable 时 EF 引用丢失

json - 如何默认为 visual studio web api 返回 json

asp.net-mvc - Web API将对象传递给Get方法

c# - 将 div 的内容居中 - 使用 CSS

asp.net - 为什么此 Asp.Net 程序以当前用户身份登录 SQL?

asp.net - 当页面验证失败时,如何禁用我的 ASP.NET AJAX ConfirmButtonExtender?

c# - 单元测试角色访问方法

c# - AnonymousType 无法序列化。考虑用 DataContractAttribute 属性标记它