【问题标题】:How to differentiate three POST methods with same parameter in Web API如何区分 Web API 中具有相同参数的三个 POST 方法
【发布时间】:2013-10-01 07:04:55
【问题描述】:

我的控制器中有三个 POST Action 方法

  1. PostProjectData([FromBody] MyObject 对象)

  2. PostCustData([FromBody] MyObject 对象)

  3. PostBookData([FromBody] MyObject 对象)

那么 Web API 将如何识别每个方法???

提前致谢

【问题讨论】:

  • 完全同意Stay Foolish。您应该将您的关注点分成三个不同的控制器。

标签: asp.net-mvc-4 asp.net-web-api


【解决方案1】:

您认为这在 Web API 平台上是一个好的设计吗?

我觉得最好有

ProjectController 将负责 PostProjectData([FromBody] MyObject 对象)

CustController 将负责 PostCustData([FromBody] MyObject 对象)

BookController 将负责 PostBookData([FromBody] MyObject 对象)

如果你真的想这样走,你可以通过以下方式设置路由。

config.Routes.MapHttpRoute(
                string.Empty,
                "yourroute1",
                new { controller = "yourcontroller", action = "PostProjectData" },
                new { httpMethod = new HttpMethodConstraint(HttpMethod.Get.Post) }
            );
config.Routes.MapHttpRoute(
                string.Empty,
                "yourroute2",
                new { controller = "yourcontroller", action = "PostCustData" },
                new { httpMethod = new HttpMethodConstraint(HttpMethod.Get.Post) }
            );
config.Routes.MapHttpRoute(
                string.Empty,
                "yourroute3",
                new { controller = "yourcontroller", action = "PostBookData" },
                new { httpMethod = new HttpMethodConstraint(HttpMethod.Get.Post) }
            );

但我认为您应该重新设计控制器,因为资源是 Project、Cust 和 Book。他们应该有自己的控制器。对吗?

【讨论】:

  • 我同意将帖子分开到不同的控制器,因为它们是不同的操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 2018-03-04
  • 2019-08-29
相关资源
最近更新 更多