СА
1) где можно обойтись нефатальным изменением моделей ответов - обходимся им. Т.е. в JSON добавляем поле, старые клиенты его просто проигнорируют при получении. Если надо изменить тип данных - можно рядом положить новое поле:
{id:123,id_v2:"65ef"}
2) когда заплатки перестают помогать и надо апать версию - по умолчанию роутер прикидывает все запросы на предыдущую. И только если в новом контроллере есть этот метод - исполняем его.
3) контроллеры транспортного уровня должны быть очень тонкими: валидация запроса, передача его на доменный уровень, получение оттуда готового к сериализации ответа.