Web API控制器上的相同方法名称

时间:2016-01-22 20:17:47

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

在WEB API控制器中,我们是否可以使用不同的HTTP谓词(如HTTPGET / HTTPPOST等)使用相同的方法名称。如果是这样,请详细说明RouteConfig中需要哪些配置。 (我有一个角度前端应用程序试图调用这些方法)

以下是示例。

 [HttpGet]
        public string Test()
        {
            return "Success";
        }


 [HttpPost]
        public string Test()
        {
            return "Success";
        }

这是我的routeconfig

config.Routes.MapHttpRoute("DefaultApiWithId", "Api/{controller}/{id}", new { id = RouteParameter.Optional }, new { id = @"\d+" });
config.Routes.MapHttpRoute("DefaultApiWithAction", "Api/{controller}/{action}");

3 个答案:

答案 0 :(得分:2)

  

在WEB API控制器中,我们可以使用相同的方法名称   不同的HTTP动词,如HTTPGET / HTTPPOST等

我想改写一下:

  

我可以向同一个Url发出GET和POST请求并进行处理   适当。

是。您可以对两个api控制器方法使用Route属性来处理相同的Url,一个用于GET,另一个用于POST,并适当地使用HttpGetHttpPost属性进行修饰。

[HttpGet]
[Route("api/mymethod")]
public string SomeMethod()
{
    return "from somemethod - get";
}
[HttpPost]
[Route("api/mymethod")]
public string SomeAnotherMethod()
{
    return "from some another method - post";
}

答案 1 :(得分:0)

您不能在同一个类中定义具有相同签名的方法。编译器不允许你这样做! 但是你为什么需要这个呢?如果操作是POST,那么您必须有一些方法来获取浏览器/客户端发布的数据。

 [HttpPost]
 public string Test(string data)
 {
      return "Success";
 }

如果没有要发布的数据,那么只需简单地获取另一种方法。

答案 2 :(得分:0)

您可以使用不同的参数添加两种方法。

    [HttpPost]
 public string Test(string data)
 {
      return "Success";
 }

[HttpGet]
 public string Test()
 {
      return "Success";
 }

希望这就是你要找的东西。