从 Web API url 中删除 "api" 前缀
Remove "api" prefix from Web API url
我有一个 API 控制器
public class MyController : ApiController { ... }
默认情况下它映射到 URL mysite/api/My/Method
,我希望它有 URL 而没有 "api" 前缀:mysite/My/Method
设置控制器属性 [RoutePrefix("")]
对我没有帮助。
还有其他方法可以实现吗?
默认注册通常在 WebApiConfig
中找到并且看起来像这样
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Attribute routing.
config.MapHttpAttributeRoutes();
// Convention-based routing.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
您需要在基于约定的设置中编辑 routeTemplate
。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Attribute routing.
config.MapHttpAttributeRoutes();
// Convention-based routing.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
请注意,如果此项目与 MVC 共享,api
前缀的原因是为了避免两个框架之间的路由冲突。如果 Web API 是唯一使用的东西,那么应该没有问题。
我有一个 API 控制器
public class MyController : ApiController { ... }
默认情况下它映射到 URL mysite/api/My/Method
,我希望它有 URL 而没有 "api" 前缀:mysite/My/Method
设置控制器属性 [RoutePrefix("")]
对我没有帮助。
还有其他方法可以实现吗?
默认注册通常在 WebApiConfig
中找到并且看起来像这样
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Attribute routing.
config.MapHttpAttributeRoutes();
// Convention-based routing.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
您需要在基于约定的设置中编辑 routeTemplate
。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Attribute routing.
config.MapHttpAttributeRoutes();
// Convention-based routing.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
请注意,如果此项目与 MVC 共享,api
前缀的原因是为了避免两个框架之间的路由冲突。如果 Web API 是唯一使用的东西,那么应该没有问题。