Restful Api

Всем привет!

Появилась необходимость реализовать restful api на базе yii с поддержкой версионности.

Будет сайт, аля зазывалка воспользоваться мобильным приложением. И будет мобильное приложение,

которое взаимодействует с сервером через API.

Запросы вида: GET api.site.ru/v1/login?username=

Где v1 - это основная версия API. И также клиент будет передавать в http заголовке подверсию

в рамках основой версии. Например: "Service-version: a1".

Хочу реализовать API в виде отдельного модуля. Но вот хоть убейте, не могу понять как сделать поддержку

версионности для API. Например есть три разные подверсии: a1,a2,a3. В них метод login() имеет разную реализацию и

вот как хранить все версии методов и как вызывать необходимый? Либо если метод в контроллере не трогать,

а модифицировать модель/класс, то вопрос такой же, где и как хранить разные версии и как создавать объект нужной версии?

Мозг уже сломался …

Мы делаем контроллерами. То есть есть ApiController, который базовый с тем, что никогда не меняется и кучка контроллеров вроде Api20Controller, Api21Controller и т.д.

Т.е. получается в моем случае (мне нужно подверсию читать из хттп заголовка) надо делать реализацию в виде отдельного класса для UrlManager, либо класс для правил, и там парсить хеадер и перенаправлять на нужный контроллер, так?

Да, можно при помощи UrlRule. Там даже перенаправлять не придётся, просто направлять.

Спасибо за подсказки!