在 web api 中,默认路由是:
/api/locations/123?days=5
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
但是,如果我希望路线看起来像这样/api/locations/123/events?days=5
,同时仍然能够LocationsController
用这样的路线击中/api/locations/123?state=md
控制器:
public class LocationsController : ApiController {
// GET api/locations/123/events?days=5
public IEnumerable<Event> GetEventsByDays(int idLocation, int days) {
// do stuff
}
// GET api/locations/123?state=md
public IEnumerable<Location> GetLocationsByState(string state) {
// do stuff
}
}
这里真的有两个问题:
- 有一个返回事件是否有意义,
LocationsController
或者应该有一个完全独立的控制器? - 如何
WebApiConfig
设置路线以允许这样的路线?