在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}");
答案 0 :(得分:2)
在WEB API控制器中,我们可以使用相同的方法名称 不同的HTTP动词,如HTTPGET / HTTPPOST等
我想改写一下:
我可以向同一个Url发出GET和POST请求并进行处理 适当。
是。您可以对两个api控制器方法使用Route
属性来处理相同的Url,一个用于GET
,另一个用于POST
,并适当地使用HttpGet
和HttpPost
属性进行修饰。
[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";
}
希望这就是你要找的东西。