我有一個簡單的控制器,它返回的縮略圖,它的定義如下:ASP.NET的WebAPI定製路線
public class ThumbnailsController : ApiController
{
public HttpResponseMessage Get(string id)
{
//code here
}
}
一切工作正常,我可以使用URL
訪問圖像,但我想修改此方法像這樣:
public class ThumbnailsController : ApiController
{
public HttpResponseMessage Get(string login="", int size=64)
{
//code here
}
}
想法是能夠調用:
- http://site.com/api/Thumbnails/
- 這將漚金塔當前登錄的用戶的圖片在默認情況下(64×64)大小
- - 在128×128大小
我的問題是這將返回mylogin用戶圖片 - 這將返回mylogin在默認情況下(64×64)尺寸
用戶圖片 - http://site.com/api/Thumbnails/mylogin/128
路線,默認路線與我不變的方法一起工作,但我應該如何更改默認值才能使其工作?
我也會有其他Api控制器,但只有這個應該有自定義路由。
這是我的嘗試,但它不工作。
routes.MapHttpRoute(
name: "Thumbnails",
routeTemplate: "api/thumbnails/{login}/{size}",
defaults: new {controller="Thumbnails", action="Get", login = RouteParameter.Optional, size = RouteParameter.Optional }
);
編輯 這是我的控制器測試方法:
public class ThumbnailsController : ApiController
{
public string Get(string login="", int size=64)
{
return string.Format("login: {0}, size: {1}", login, size);
}
}
這裏是我RouteConfig:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional}
);
routes.MapHttpRoute(
name: "Thumbnails",
routeTemplate: "api/Thumbnails/{login}/{size}",
defaults: new { controller = "Thumbnails" , login = RouteParameter.Optional, size = RouteParameter.Optional }
);
}
}
我沒有申報默認路由,就這一點,因爲現在我只有這個網頁API控制器 – Misiu
我複製了你的代碼,一切似乎都在這裏工作。你是否收到錯誤信息,或者你的電話沒有打到控制器? –
我的參數不傳遞給方法,它獲取默認值。我將修改我的問題,並添加測試方法 – Misiu