有人可以帮我填我的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