«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2021/03/09 06:16:28  №1961634 1
Анон, тупой вопрос. Я вроде думал что понимаю что такое API, REST, вся эта блудня с create|update и т.д. Но как обычно практика все пом есстам расставила, лол.
У меня есть раздел ( группа роутов ) приложухи (слим 4), в ней роуты на просто отрисовку страниц, пост-запросы от форм, а так же c этих страниц несколько ajax-запросов к серверу.
Трабла возникла когда я захотел проверку прав закинуть в мидлвэйр на группу роутов, а роуты у меня внезапно ( ага ) есть те что возвращают шаблоны, а есть те что возвращают ajax. Соответственно мидлвэйры могут быть разные, но я хотел как то по группам группировать.
Так вот вопрос - можно ли назвать те маршруты что обрабатывают ajax запросы - API? И нужно ли мне их вынести в отдельный раздел и отдельные классы?
А то, условно, у меня в одном классе контроллера находятся как методы что обрабатывают обычные запросы от браузера, так и те что обрабатывают ajax.
Ответы: >>1962165
Аноним 2021/03/09 16:32:26  №1962165 2
>>1961634

Вообще, по моему, прописать права в middleware неудобно. Там можно сделать глобальную проверку (вроде того что в раздел /admin может зайти только админ), но если у тебя в админке 40 разделов, ты их все будешь в middleware перечислять? А если у раздела поменяется URL, ты не забудешь в middleware поменять?

Плохо, когда определение роута и права разнесены.

Допустим у тебя есть админка и в ней страницы с разными уровнями доступа. По моему, чище всего и безопаснее было бы сделать так:

Указывать права доступа там же, где указывается роут. Если права не указаны, то смотрим по префиксу:

- /admin - доступно только суперадминистратору
- другой - доступно всем

В такой ситуации, если мы забудем указать права на раздел админки, они будут выставлены максимально строго (защищаемся от своей забывчивости). Если мы меняем URL раздела, права не меняются.

-----

Что касается AJAX. По моему, так это не имеет значения, возвращает контроллер AJAX или JSON. проверка прав для них работает одинаково.

Некоторые выносят API отдельно, но мне кажется это актуально, если у тебя есть настоящее, документированное API для внешних сайтов или устройств. Если у тебя просто обработчики аякс запросов с сайта, я бы не называл это полноценным API.
Ответы: >>1962567
Аноним 2021/03/10 07:27:52  №1962567 3
>>1962165
Спасибо за ответ, и за ранее сделанные ответы на мои вопросы тоже спасибо!
>>Там можно сделать глобальную проверку
В сущности так я и реализовал.