WebApi Restful route with filter
===

I want to provide a GetAll api with a filter parameter like so:
/api/v1/location/amsterdam/order/?filter=x
but with this route:

            routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/v1/location/{location}/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional}
            );

and this url:
/api/v1/location/amsterdam/order/?filter=x
I get an exception:
"No action was found on the controller 'Order' that matches the request."

The 'order' controller has the following methods:

        public HttpResponseMessage Get(int id)
        public IQueryable<OrderDTO> Get(string filter)
        public HttpResponseMessage Get()

When I remove the {location} segment from the route and the url (/api/v1/location/order/?filter=x), the request **is** matched by the Get(string filter) method.

What am I doing wrong ? What is the proper way to do this ?