Actor
@Actor

Как разделить смешанный backend?

Есть Yiinitializr, во фронте старая админка на Yii стандартных компонентах, и частично переписанная на AngularJS. Как лучше разделить?
Проблема возникла в связи с тем что есть правила
// REST patterns
                '<controller:\w+>/<id:\d+>' 				=> '<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>' 	=> '<controller>/<action>',
                '<controller:\w+>/<action:\w+>'				=> '<controller>/<action>',


                array('<controller>/index', 	'pattern' => 'api/<controller:\w+>', 		'verb' => 'POST'),
                array('<controller>/index', 	'pattern' => 'api/<controller:\w+>', 		'verb' => 'POST'),
                array('<controller>/index', 	'pattern' => 'api/<controller:\w+>', 		    'verb' => 'GET'),
                array('<controller>/view', 		'pattern' => 'api/<controller:\w+>/<id:\d+>', 	'verb' => 'GET'),
                array('<controller>/update', 	'pattern' => 'api/<controller:\w+>/<id:\d+>',   'verb' => 'PUT'),
                array('<controller>/delete', 	'pattern' => 'api/<controller:\w+>/<id:\d+>',   'verb' => 'DELETE'),
                array('<controller>/create', 	'pattern' => 'api/<controller:\w+>',            'verb' => 'POST'),

                array('<controller>/<subaction>', 	'pattern' => 'api/<controller:\w+>/<id:\d+>/<subaction:\w+>',
                    'verb' => 'GET'),
                array('<controller>/<subaction>', 	'pattern' => 'api/<controller:\w+>/<id:\d+>/<subaction:\w+>',
                    'verb' => 'POST'),
                // default rules
                ''  => 'site/dashboard',

Верхние правила 3 перекрывают API, и если поменять местами то правила API перекроют те 3.
  • Вопрос задан
  • 2633 просмотра
Решения вопроса 1
vollossy
@vollossy
Веб-разработчик с небольшим опытом работы
Я лично выделил бы апи и админку в отдельные модули просто.
Как варианты можно сделать так:
Если первые три правила только для админки используются, то я бы просто в них добавил префикс подходящий:
...
'admin/<controller:\w+>/<id:\d+>'  => 'adminController/view',
'admin/<controller:\w+>/<action:\w+>/<id:\d+>' => 'adminController/<action>',
'admin/<controller:\w+>/<action:\w+>' => 'adminController/<action>'
...

Ну или если для более общих вариантов, создал бы свое правило, в котором проверял бы, что запрос к апи и вызывал бы соответствующий путь.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@DeD_PereGarbI4
Посмотри здесь habrahabr.ru/post/117457, неплохое решение
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы