我的 api 控制器中有这个路由属性"[路由前缀("api/v5/test"(]"。我想允许在不指定版本号的情况下使用我的 api。如果 url 中不包含版本号,则服务器会将请求重定向到最新的 api 版本。我该怎么做?
- /
api/v1/products
config.Routes.MapHttpRoute( name: "V1Api", routeTemplate: "api/v1/products", defaults: new { controller = V1_Products } );
/api/v2/products
config.Routes.MapHttpRoute( name: "V2Api", routeTemplate: "api/v2/products", defaults: new { controller = V2_Products } );
/API/产品
config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/products", defaults: new { controller = V2_Products } );
无法在控制器上添加多个路由前缀。
一种可能的解决方案是为每个方法添加多个路由。您可以使用"~"指定绝对路径,并忽略控制器的路由前缀。
例:
[RoutePrefix("api/v5/test)]
public class TestV5Controller : ApiController
{
[Route("{id}")]
[Route("~/api/latest/test/{id}")]
[HttpGet]
public IHttpResult Get()
{
return Ok("Hello World");
}
}