有人可以幫我填我的GET方法的WebAPI的空白。我想傳遞任何參數並獲得所有結果。通過在一個int,並得到一個結果,並通過在一個名爲參數由TYPEID /或了zoneid既過濾,但我在努力得到這個工作。的WebAPI GET可選整數參數
TimeController : ApiController
// Time/
//Time/1
//Time/typeId=1
//Time/zoneId=1
Time/typeId=1&zoneId=1
我得到的最接近與
全球
RouteTable.Routes.MapHttpRoute(name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional}
);
RouteTable.Routes.MapHttpRoute(name: "TemplateTimeApi",
routeTemplate: "api/{controller}/{typeId}/{zoneId}",
defaults: new {typeId = RouteParameter.Optional, zoneId = RouteParameter.Optional }
);
控制器
List<TimeView> Get(int typeId, int? zoneId = null)
TimeView Get(int id)
,但我無參數得到404。
我可以改變的參數之一爲一個字符串,如果該問題是與兩個整數,但是,我更願意理解這個問題,並得到它的工作。
謝謝Cuong,我需要重新閱讀,因爲顯然沒有得到它。爲了解決我現在想要通過zone/1獲取Get(int id)的問題,並可選地傳遞none,typeId和zoneId中的一個或兩個來返回列表,我最好的選擇是什麼? – 2012-08-04 07:21:45
所以你的意思是,你想通過zoneId Get(int id)typeId&zoneId另一種方法?更清楚的是,你的路線應該是:「api/{controller}/{zoneId}」。和你的方法:Get(int zoneId) – 2012-08-04 07:34:54
是的,但我想我得到的地方使用var queryValues = HttpUtility.ParseQueryString(Request.RequestUri.Query); – 2012-08-04 07:37:55