Всем привет!
Появилась необходимость реализовать restful api на базе yii с поддержкой версионности.
Будет сайт, аля зазывалка воспользоваться мобильным приложением. И будет мобильное приложение,
которое взаимодействует с сервером через API.
Запросы вида: GET api.site.ru/v1/login?username=.....
Где v1 - это основная версия API. И также клиент будет передавать в http заголовке подверсию
в рамках основой версии. Например: "Service-version: a1".
Хочу реализовать API в виде отдельного модуля. Но вот хоть убейте, не могу понять как сделать поддержку
версионности для API. Например есть три разные подверсии: a1,a2,a3. В них метод login() имеет разную реализацию и
вот как хранить все версии методов и как вызывать необходимый? Либо если метод в контроллере не трогать,
а модифицировать модель/класс, то вопрос такой же, где и как хранить разные версии и как создавать объект нужной версии?
Мозг уже сломался ...
Page 1 of 1
Restful Api схема
#2
Posted 15 September 2013 - 04:00 PM
Мы делаем контроллерами. То есть есть ApiController, который базовый с тем, что никогда не меняется и кучка контроллеров вроде Api20Controller, Api21Controller и т.д.
Yii 2.0 Development Cookbook
Enjoying Yii? Star us at github
Support me so I can work more on Yii: https://www.patreon.com/samdark
Enjoying Yii? Star us at github
Support me so I can work more on Yii: https://www.patreon.com/samdark
#3
Posted 15 September 2013 - 10:49 PM
samdark, on 15 September 2013 - 04:00 PM, said:
Мы делаем контроллерами. То есть есть ApiController, который базовый с тем, что никогда не меняется и кучка контроллеров вроде Api20Controller, Api21Controller и т.д.
Т.е. получается в моем случае (мне нужно подверсию читать из хттп заголовка) надо делать реализацию в виде отдельного класса для UrlManager, либо класс для правил, и там парсить хеадер и перенаправлять на нужный контроллер, так?
#4
Posted 16 September 2013 - 03:24 AM
Да, можно при помощи UrlRule. Там даже перенаправлять не придётся, просто направлять.
Yii 2.0 Development Cookbook
Enjoying Yii? Star us at github
Support me so I can work more on Yii: https://www.patreon.com/samdark
Enjoying Yii? Star us at github
Support me so I can work more on Yii: https://www.patreon.com/samdark
Share this topic:
Page 1 of 1