[英]Web API 2 routing - Route attribute
問題是關於使用Route
屬性定義自定義路由。
我知道在WebApiConfig
類中,您總是定義默認路由,
configuration.Routes.MapHttpRoute("API Default", "api/{controller}/{id}",
new { id = RouteParameter.Optional });
當我想要傳遞另一個參數時,我無法工作的是什么。 我知道我可以這樣做( 下面的代碼定義在上面列出的默認路由下面 ):
//configuration.Routes.MapHttpRoute(
// name: "GetBrandImagePaths",
// routeTemplate: "api/{controller}/{id}/{type}");
但我寧願使用自定義路由,而不是在WebApiConfig
文件中定義所有這些路由。 但是,如果我在文件中沒有上面注釋掉的代碼,我會得到一個404.導致我相信自定義Route
甚至沒有被查看。
public class HelperApiController : ApiController
{
[HttpGet]
[Route("api/helperapi/{id}/{type}")]
public string GetBrandImages(int id, string type)
{
.....
}
}
我怎么能擁有它所以我可以使用WebApiConfig
文件中定義的路由,並在各個API控制器中定義自定義路由。
請注意,該項目也是一個MVC項目(不僅僅是WebApi)。 有什么我錯過了,做錯了等嗎? 我知道那里有很多帖子定義了如何傳遞多個參數,但我認為我的問題更具體地說明為什么一個有效而另一個無效。
您需要調用config.MapHttpAttributeRoutes()
。
這將解析所有Controller
類並從屬性派生路由。
我不會將其與標准路由混合使用。
啟用屬性路由
要啟用屬性路由,請在配置期間調用MapHttpAttributeRoutes 。 此擴展方法在System.Web.Http.HttpConfigurationExtensions類中定義。
using System.Web.Http; namespace WebApplication { public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API routes config.MapHttpAttributeRoutes(); // Other Web API configuration not shown. } } }
屬性路由可以與基於約定的路由相結合。 要定義基於約定的路由,請調用MapHttpRoute方法。
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 } ); } }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.