func (rt *router) findRoute(httpMethod, urlStr string) (*Route, map[string]string, bool, error) {

	// parse the url
	urlObj, err := url.Parse(urlStr)
	if err != nil {
		return nil, nil, false, err
	}

	route, params, pathMatched := rt.findRouteFromURL(httpMethod, urlObj)
	return route, params, pathMatched, nil
}
func (rt *router) findRoute(httpMethod, urlStr string) (*Route, map[string]string, bool, error) {

	
	urlObj, err := url.Parse(urlStr)
	if err != nil {
		return nil, nil, false, err
	}

	route, params, pathMatched := rt.findRouteFromURL(httpMethod, urlObj)
	return route, params, pathMatched, nil
}
func ( rt * router ) findRoute ( httpMethod , urlStr string ) ( * Route , map [ string ] string , bool , error ) { // parse the url urlObj , err := url . Parse ( urlStr ) if err != nil { return nil , nil , false , err } route , params , pathMatched := rt . findRouteFromURL ( httpMethod , urlObj ) return route , params , pathMatched , nil }
// Parse the url string (complete or just the path) and return the first matching Route and the corresponding parameters.
Parse the url string ( complete or just the path ) and return the first matching Route and the corresponding parameters .