路由前缀可以被覆盖
Route Prefix can be overridden
我有一个基本控制器,它执行很少 post 并获得优惠,下面我给出了 get
的示例结构
[AxAuthorization(Resource = "Offers")]
[RoutePrefix("api/offer/v2/offers")]
public class OffersV2Controller : ApiController
{
[HttpGet]
[Route("{id}", Name = "OffersGetById")]
public async Task<HttpResponseMessage> GetById([FromUri(Name = "id")]string OfferId)
{
----
-----
}
}
我们通过 api/offer/v2/offers/id 调用此 get 方法,但其他一些使用我们服务的消费者喜欢调用 api/v2/offers/id,有什么方法可以覆盖它吗?上面的代码是我们不想修改路由前缀的产品生成的代码。
[Route("api/v2/offer/test")]
[Route("api/offer/v2/test")]
或
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "route1",
routeTemplate: "test/v2/Values",
defaults: new { controller = "Values", action = "Get" });
config.Routes.MapHttpRoute(
name: "route2",
routeTemplate: "v2/test/Values",
defaults: new { controller = "Values", action = "Get" });
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
在webapiConfig.cs
我有一个基本控制器,它执行很少 post 并获得优惠,下面我给出了 get
的示例结构[AxAuthorization(Resource = "Offers")]
[RoutePrefix("api/offer/v2/offers")]
public class OffersV2Controller : ApiController
{
[HttpGet]
[Route("{id}", Name = "OffersGetById")]
public async Task<HttpResponseMessage> GetById([FromUri(Name = "id")]string OfferId)
{
----
-----
}
}
我们通过 api/offer/v2/offers/id 调用此 get 方法,但其他一些使用我们服务的消费者喜欢调用 api/v2/offers/id,有什么方法可以覆盖它吗?上面的代码是我们不想修改路由前缀的产品生成的代码。
[Route("api/v2/offer/test")]
[Route("api/offer/v2/test")]
或
config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "route1", routeTemplate: "test/v2/Values", defaults: new { controller = "Values", action = "Get" });
config.Routes.MapHttpRoute(
name: "route2",
routeTemplate: "v2/test/Values",
defaults: new { controller = "Values", action = "Get" });
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
在webapiConfig.cs