簡體   English   中英

Web API 2路由 - 路由屬性

[英]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類並從屬性派生路由。

我不會將其與標准路由混合使用。

ASP.NET Web API 2中的屬性路由

啟用屬性路由

要啟用屬性路由,請在配置期間調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM