whole_func_string: function matchRoute(method, url, apiRoutes, params) {
  	debug('matching route method %s with url %s', method, url);
  
  	var routes = apiRoutes[method]
  		, matchedRoute;
  
  	for(var routeUrl in routes) {
  		var route = routes[routeUrl]
  			, keys = route.keys
  			, match = route.regexp.exec(url);
  
  		if(match) {
  			matchedRoute = route;
  			extractParams(match, keys, params);
  			break;
  		}
  	}
  	debug('matched route `%j`', matchedRoute);
  
  	return matchedRoute;
  }
func_code_string: function matchRoute(method, url, apiRoutes, params) {
  	debug('matching route method %s with url %s', method, url);
  
  	var routes = apiRoutes[method]
  		, matchedRoute;
  
  	for(var routeUrl in routes) {
  		var route = routes[routeUrl]
  			, keys = route.keys
  			, match = route.regexp.exec(url);
  
  		if(match) {
  			matchedRoute = route;
  			extractParams(match, keys, params);
  			break;
  		}
  	}
  	debug('matched route `%j`', matchedRoute);
  
  	return matchedRoute;
  }
func_documentation_string: PrivateFunction: matchRoute
  This function takes an HTTP method and a URL. It tries to match any API route
  contained in apiRoutes. If a route is found, the routes regex is used to
  extract any parameters from the URL. These parameters are contained in the
  params argument afterwards.
  
  The actual matched route gets returned if found.
  
  Thanks to:
  * https://github.com/visionmedia/express/blob/master/lib/router/route.js#L50
  
  Parameters:
  (String) method - An HTTP method verb
  (String) url - The URL to match a route for
  (Object) apiRoutes - An object containing all api routes too look after
  (Object) params - An object which will contain all extracted parameters
  from url, if a route matched.
  
  Returns:
  (Object) containing all information about the matched api route. Dont
  forget that the params argument will contain any extracted
  parameters from the url!