我已编码API controller
,我希望在此控制器中添加RoutePrefix
。
我的控制器名称为MapCompanyController
,此控制器有一个名为GetMapCompany
的方法。
目前,我可以通过调用以下webaddress访问此方法:/api/MapCompany/GetMapCompany
我希望添加RoutePrefix
,以便此方法的路径为:/api/1_0/MapCompany/GetMapCompany
这就是我所做的:
[RoutePrefix("1_0")]
添加到MapCompanyController
routes.MapMvcAttributeRoutes();
添加到
RegisterRoutes
RouteConfig
执行此操作后,我仍然可以使用/api/MapCompany/GetMapCompany
地址访问该方法,/api/1_0/MapCompany/GetMapCompany
会执行以下错误:
HTTP Error 404.0 - Not Found
我可以帮助您使用此代码吗?
提前致谢
修改
我创建了一个简单的控制器,如下所示:
public class TestRouteController : ApiController
{
// GET: api/TestRoute/5
public string Get(int id)
{
return "value";
}
}
要进入Get
功能,以下网址是正确的:
API / TestRoute / 5
如果我将代码更改为如下:
public class TestRouteController : ApiController
{
// GET: api/TestRoute/5
[Route("routetest")]
public string Get(int id)
{
return "value";
}
}
Get
功能的路径是什么?
我尝试了以下内容:
答案 0 :(得分:2)
如果这是一个真正的ApiController这应该用WebApiConfig注册而不是RouteConfig:
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
}
}
}
然后在你的global.asax:
GlobalConfiguration.Configure(WebApiConfig.Register);
MVC和WebApi中的路由是不同的
编辑: 在webapi中为控制器和方法定义路由很简单,只需要在控制器类中添加RoutePrefix属性,然后就可以在方法中添加或不添加Route属性:
[RoutePrefix("api/TestRoute")]
public class TestRouteController : ApiController
{
[Route("testroute")]
[HttpGet()]
public string Get(int id)
{
return "value";
}
}
这种方式路由应该是api / TestRoute / testroute?id = whatever
RouteConfig用于mvc“Controller”,对于webApi“ApiController”只是注册上面的路由并用属性定义它们,不需要阻塞RouteConfig:)