@AsdfAsdfSK

Структура интернет магазина?

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

Суть структуры следующая:
Бэкэнд-json файл-фронтэнд.Как я понял,Json файл является чем-то вроде связующего звена между фронтом и бэком.Как связать json и фронт энд(например с корзиной для пользователя) я понимаю,но вот с бэком проблемы.В json файле я формирую базу товаров и пользуюсь ими через ID,но как реализовать все это так,что бы будущий администратор магазина мог добавлять-удалять файлы не в JSON файле,то есть не в самом коде.Как я понимаю,для этого нужна база данных,которая и будет управлять json файлом.Но как соединить базу данных с json файлом?Как вообще соединить все части проекта воедино?То есть пользователя-администратора и БД?Какие технологии для этого вы можете рекомендовать?Неплохо знаю джаву.JS на средненьком уровне понимания.Не знаю с какой стороны подойти ко всему этому.
Буду признателен за любую помощь.
  • Вопрос задан
  • 2022 просмотра
Пригласить эксперта
Ответы на вопрос 1
@sorokinfil
Json - это способ обмена данными между разными частями приложения, основанный на javascript. Не знаю, почему Вы заострили внимание именно на нём. Обмен данными между back-end и front-end типичного магазина происходит с помощью запросов.
Типичная история, по которой Вы сможете найти много материала по ходу разработки - back-end на apache+php+mysql, front-end-интерактив на ajax (способ отправки с front-end'а информации на back-end без перезагрузки страницы).
Чуть сложнее - использовать вместо ajax отдельный сервер на nodejs (серверный js), который может обеспечивать как только интерактив типа корзины товаров, так и полностью заменить apache+php. Если Вам нравится javascript и json-объекты, есть смысл изучить nodejs и делать back-end на нём.
Для хранения товаров обязательно должна быть база данных. Не в текстовых же файлах их хранить. Скорее всего подойдёт mysql. С базой данных соединяется back-end и извлекает оттуда данные.

Схема в общем случае такая:
Клиент ходит по сайту. Запрашивает у сервера страницу, посылая кое-какие данные вместе с запросом (например, somestore.ru/orders?style=list&page=3). В url данные после ? - это get-запрос.
Сервер получает запрос и определяет, чего хочет клиент. Обычно запросы перенаправляются в единую входную точку. Если это apache+php или nginx+php, то направляют в index.php в корне сайта. url разбивается на части, дальше сервер думает таким образом, каким его научил думать разработчик.
В url есть /orders? Да, значит клиент запросил страницу заказов.
В get-запросе есть style? Да, значит выбран кастомный тип вывода заказов.
В get-запросе есть page? Да, значит выбрана кастомная страница.
В get-запросе есть limit? Нет, значит количество заказов на странице будет по умолчанию.
Далее сервер тем способом, каким его научил разработчик, формирует и отправляет запрос в СУБД, чтобы извлечь заказы из таблицы orders, начиная со страницы page (с заказа под номером (page-1)*limit+1) и в количестве limit. База возвращает серверу запрошенную инфу. Сервер решает, каким образом выводить инфу (был ли передан style с клиента), формирует ответ в виде html-кода и отправляет клиенту. Клиент видит готовую и сформированную страницу на экране.
html-код в свою очередь может содержать ссылки на js-файлы, об этом Вам известно. Клиент жмёт на кнопку "Отменить заказ", javascript узнаёт об этом и формирует ajax-запрос на сервер, который обращается к специальному файлу на сервере. Например, в корне сайта у нас index.php, а также ajax.php. И url, по которому js передаёт ajax-запрос, может быть в виде somestore.ru/ajax.php. При этом запрос может быть как в виде get (детали передаются с помощью параметров url после знака "?"), так и post (детали передаются в теле запроса, могут быть как раз в виде json).
ajax.php - отдельный единый обработчик для всех ajax-запросов (необязательно так). Он тоже должен быть научен обращаться в базу данных и извлекать инфу.
Клиент отменил заказ, ajax.php на сервере понимает, что это произошло, и направляет запрос в базу данных на удаление записи с заказом, после чего возвращает клиенту ответ. Ответ от ajax может быть как текстом/html-кодом, так и json-объектом. Выводится таким же образом, каким и без ajax, при обычной навигации по сайту.
Клиентский javascript получает ответ, что заказ удалён, и удаляет его со страницы без перезагрузки.
Ответ написан
Ваш ответ на вопрос

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

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