平时做api的时候Route都是使用的默认的,比如:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
但是有的时候特殊业务,需要对某一些路径重新定义规则,这时候使用Route特性来操作就最方便了。
如图上两个Action,正常不使用特性的时候访问路径应该是:/Api/Regex,/Api/Regex/index/122 这样的。
在使用了特性之后就变成:/Regex , /Regex/Index/122 这种了。非常灵活方便。
需要注意的就是:
1、RoutePrefix是使用在Controller上的,当然也不是必须的。也可以写成这样的[RoutePrefix(“Regex/{controller}”)]
2、Route也可以直接成这样 [Route(“~/Regex/Index/{id}”)]
3、需要在路由配置里增加特性路由的启用代码
config.MapHttpAttributeRoutes();
我的业务比较特殊,我将它放在了默认配置的下面,正在开发中,上下都可以尝试一下。
还要将此配置所在的方法(我的是RegisterWebApi)添加到全局配置中,一般是Global,将
WebApiConfig.Register(GlobalConfiguration.Configuration);
修改成:GlobalConfiguration.Configure(WebApiConfig.Register);
由于我的是RegisterWebApi所以我的是GlobalConfiguration.Configure(RegisterWebApi);,看自己的业务情况。
(关于RoutePrefix、Route两个特性的具体使用方法还有很多,贴个连接大家可以看看:https://www.cnblogs.com/shy1766IT/p/5578807.html)