Tôi không biết tại sao bạn muốn làm điều này và tôi chắc chắn sẽ không khuyên bạn nên định tuyến tất cả mọi thứ thông qua một bộ điều khiển, tuy nhiên bạn có thể đạt được điều này như sau. Giả sử bạn chỉ bao giờ sẽ có một tài nguyên với một id bắt buộc trong các cuộc gọi của bạn, thêm video này vào WebApiConfig của bạn:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{resource}/{id}",
defaults: new { controller = "SuperDuper", id = RouteParameter.Optional }
);
}
}
Sau đó xác định phương pháp điều khiển của bạn như sau:
public class SuperDuperController : ApiController
{
public IHttpActionResult Get(string resource, int? id = null)
{
return Ok();
}
}
Bạn sẽ cần phải quyết định IHttpActionResult
thích hợp để trả lại cho từng loại tài nguyên khác nhau.
Ngoài ra sử dụng thuộc tính Routing, đảm bảo rằng config.MapHttpAttributeRoutes()
hiện diện trong WebApiConfig của bạn và thêm các thuộc tính sau cho phương pháp điều khiển của bạn:
[RoutePrefix("api")]
public class SuperDuperController : ApiController
{
[Route("{resource}/{id?}")]
public IHttpActionResult Get(string resource, int? id = null)
{
return Ok();
}
}
Nguồn
2015-07-06 09:43:40
bạn có thể quan tâm đến http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection –