Какой подход лучше для организации API и серверной части?
Всем привет. Мне хотелось бы реализовать headless приложение, которые одинаково работало бы как при обычных (веб) запросах пользователя на сайте, так и API. Например, если пользователь обратится по адресу /structure/workers, то ему отобразится список всех исполнителей, а если через API, то вернется ответ в формате JSON.
На текущий момент я представляю такую схему, что есть какой-то класс-сервис, который возвращает массив данных после выполнения бизнес логики. В зависимости от обращения контроллер или что-то другое, которые оперирует запросами и ответами, анализирует метод обращения и нужным образом возвращает данные.
Вопрос только к организации API и Server части так, чтобы методы API были доступны не по аналогичному пути. То есть, /structure/workers - серверная часть, /api//structure/workers - API часть. Все они будут вызывать, условно, class StructreService, который вернет уже данные. Но тут не очень понимаю, как реализовать единую прослойку, чтобы не писать 2 контроллера для API и Server части.
Есть какие-то идеи или архитектуры для моей задачи с максимальным использованием ООП?