Рекомендации при запросе серверной части из сценария

#php #ajax #graph #frontend

Вопрос:

Я работаю над несколькими отчетами для веб-приложения. Я должен показать некоторые данные из своей базы данных на некоторых столбчатых/линейных диаграммах. Я использую фреймворк Codeigniter, поэтому мой бэкэнд-PHP, а мой интерфейс в основном состоит из html и JS. Что касается отображения графиков, я использую библиотеку электронных диаграмм.

Мой вопрос в том, какова наилучшая практика при получении данных для диаграмм. Я мог бы использовать вызов ajax и получить общие данные, затем отформатировать их во внешнем интерфейсе с помощью JS и, наконец, нарисовать диаграмму.

Вторым вариантом было бы также выполнить вызов ajax, но создать конечную точку, которая уже отправляет данные в определенном формате, понятном для графика. Тогда эта конечная точка будет использоваться только этим конкретным графиком.

Третий вариант-снова создать специальную функцию для извлечения и форматирования данных в бэкэнде, но на этот раз работайте как с html, так и с данными в представлении codeigniter. Затем обслужите страницу html js со всеми необходимыми данными, без асинхронного вызова.

Все три варианта имеют некоторые ограничения, поэтому мне интересно, какая из них является наилучшей практикой. И если у вас есть другой вариант, я хотел бы прочитать об этом.

Комментарии:

1. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

Ответ №1:

Я думаю, это зависит от ваших потребностей. В целом, я думаю, что лучшая практика-это как можно меньше зависимостей между вашим бэкендом и вашим интерфейсом. Особенно, если вы планируете изменить свой интерфейс или хотите обслуживать несколько интерфейсов.

Таким образом, конечная точка должна возвращать данные в формате, который может быть понятен и использован всеми. Вам необходимо внедрить сервисы в контроллер этого API. Таким образом, контроллер получает данные от служб и реагирует на них. Только это. Извлечение данных (из базы данных) и их обработка должны выполняться службами.

Таким образом, вы становитесь более гибкими. Вы можете создать контроллер API для ваших вызовов AJAX и другой контроллер, который при необходимости отображает HTML. С первым, контроллером API, как я уже говорил выше, контроллер получает данные и возвращает их. Вы позволяете интерфейсу заботиться о вычислениях, преобразованиях и т. Д. Во втором случае контроллер должен получать данные из внедренных сервисов, а также вычислять, преобразовывать и т. Д., А затем отображать HTML.

Прочитайте о принципе единоличной ответственности или, в более общем плане, о принципе разделения обязанностей.