.NET Web API中的多个url级别
我正在使用新的.NETWebAPI设置rest服务,我遇到了一个小问题。我们希望有一点不同的路线,但我不知道如何实现这一点.NET Web API中的多个url级别,.net,routing,asp.net-web-api,.net,Routing,Asp.net Web Api,我正在使用新的.NETWebAPI设置rest服务,我遇到了一个小问题。我们希望有一点不同的路线,但我不知道如何实现这一点 public class FormController : ApiController { // api/form public string Get() { return "OK-Get"; } // api/form/method1 public string Method1() {
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"}
);
欲了解更多信息,请阅读有效的!非常感谢。只需注意,路由配置需要在
WebApiConfig.cs
中才能生效。