我正在使用新的.NET Web API设置休息服务,但遇到了一个小问题。我们希望有一些不同的路由,但是我不确定如何实现这一点。
public class FormController : ApiController
{
// api/form
public string Get()
{
return "OK-Get";
}
// api/form/method1
public string Method1()
{
return "OK1";
}
// api/form/method2
public string Method2()
{
return "OK2";
}
}
但这是行不通的。如果我转到
/api/form/method2
,则会收到OK-Get
作为响应。我认为这与路由有关,但是我不确定,因为我以前没有使用过MVC。我试过在
WebApiConfig.cs
中像这样设置它:config.Routes.MapHttpRoute(
name: "FormApi",
routeTemplate: "api/form/{action}"
);
但这没什么。
最佳答案
路由几乎是正确的,但是主要的问题是您在其他操作方法上缺少必需的HttpMethod属性。由于其名称,在第一个方法上推断[HttpGet]
。这是您需要的:
public class FormController : ApiController
{
// api/form
public string Get()
{
return "OK-Get";
}
// api/form/method1
[HttpGet]
public string Method1()
{
return "OK1";
}
// api/form/method2
[HttpGet]
public string Method2()
{
return "OK2";
}
}
使用属于App_Start / RouteConfig.cs的路由映射
routes.MapHttpRoute(
name: "FormApi",
routeTemplate: "api/form/{action}",
defaults: new { controller = "form", action = "Get"}
);
有关更多信息,请阅读http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection