Cómo mapear correctamente las rutas de WebAPI

Estoy construyendo una API para un sitio similar a Twitter usando Web API y tengo problemas para mapear las rutas

Tengo las siguientes acciones para el controlador de usuario:

public User Get(string firstname, string lastname)
public User Get(Guid id)
public User Friends(Guid id)
public User Followers(Guid id)
public User Favorites(Guid id)

Las rutas deseadas y la documentación generada deben ser:

api/users?firstname={firstname}&lastname={lastname}
api/users/{id}
api/users/{id}/friends
api/users/{id}/followers
api/users/{id}/favorites

En WebApiConfig.cs tengo:

config.Routes.MapHttpRoute(
    "2",
    "api/{controller}/{id}",
    new { action = "get", id = RouteParameter.Optional }
);


config.Routes.MapHttpRoute(
     "1",
     "api/{controller}/{id}/{action}"
);

¿Cómo puedo mapear correctamente las rutas de WebAPI?

Respuestas a la pregunta(3)

Su respuesta a la pregunta