Вступление
Доброго времени суток. Сегодня покажу как можно сделать API для вашего сайта и то, как этот API можно будет использовать со стороны клиента. Бэкенд я пишу на Django, а за создание и настройку его API будет заниматься Django REST framework. Клиентская часть(фронтенд) сайта будет описана на Axios.
Сам процесс подключения REST API я покажу на примере обычной модели Preset в приложении Backend
Процесс внедрения REST API на сайт
Процесс создания или внедрения Django REST API для сайта, можно описать следующими шагами:
- Нужно создать или иметь уже готовый Django проект
- Настроить и установить необходимые пакеты
- Создаём модели, которые хотим использовать на стороне клиента
- Создаём сериализаторы к ним.
- Создаём представления(обработчики) для них
- Подключаем маршруты и пути
- Пишем и настраиваем фронтенд сайта для работы с API
Обо всём по порядку, по этому начнём с настройки и установки необходимых пакетов.
Настройка Django REST фреймворка
Нужно установить и подключить следующие python-модули:
- django-cors-headers: для активации так называемого Cross-Origin Resource Sharing (CORS) для общения React приложения и Django API.
- djangorestframework: это Django приложение, которое позволит нам с лёгкостью построить АПИ для нашего сайта.
- django: бэкенд нашего сайта, управление базой данных
Вот так, подключаем ново установленные модули в settings.py:
Создаём модели
Следующим шагом будет определиться с тем, с какими моделями мы хотим работать. Вот полный код модели, на примере которой мы и будем заниматься сериализацией. В файле models.py, вашего приложения создай модель:
Это всего лишь пример и ты волен создать свою собственную модель, со своими полями и методами.
Создаём классы сериализаторы
После создания необходимых моделей, нам потребуются Сереализаторы. Для этого импортируем модуль serializers из rest_framework и записываем, те поля что хотим сериализовать. Создай файл serializers.py в своём приложении и запиши следующее:
Ничего особенного в этих сериализаторах нет. Создаём класс посредством наследования. Потом выбираем модель и поля, которые хотим сериализовать. Двигаемся дальше к представлениям.
Создаём представления для сериализаторов
Теперь, нам бы видеть что мы добавляем, удаляем или изменяем. Нужно создать представления в файле views.py:
Настраиваем маршруты для представлений
И последний штрих. Чтобы наконец увидеть в действии REST API, нужно подключить созданный ранее класс-представление - PresetModelView. Для этого в файле urls.py, твоего приложения, подключим новый роутер:
Всё, готово. Давай посмотрим что получилось. Перейди по адресу localhost:8000/api/ , ты увидишь, что-то вроде этого:

Как видно из картинки мы успешно подключили и настроили наш маршрут. Перейдём по любой из представленных ссылок, например localhost:8000/api/preset/. Итак, у меня есть две учётные записи dima и some и у каждой свои пресеты. Посмотрим как работает фильтрация по пользователю:

Пользователь some

Пользователь dima
Как видно, у первого пользователя только один пресет с id=3. А у второго 2 пресета с id=1 и 2.
Работа с API со стороны клиента
Работать с API со стороны клиента, очень просто. Необходимо сделать соответствующий AJAX запрос и обработать ответ. Например, так я получу все доступные записи в Preset модели.
Дополнительная настройка REST фреймворка
У тебя наверняка возник вопрос, что всё это красиво, но хочется просто получить JSON файл на стороне клиента и сделать то что должно. У меня так же зудело и я нашёл довольно элегантное решение для данной проблемы.
Смотри, в режиме разработки нам будут показываться предыдущие страницы на картинках, но если мы поменяем режим (т.е. сделаем debug=False в settings.py) мы будем получать вот такие вот ответы:

У меня в firefox стоит специальное расширение которое делает вот такую вот красоту. Расширение называется, если что, JSONView и доступно для Chrome тоже.
Чтобы добиться такого результата, достаточно добавить в конце файла settings.py следующие строчки:
Мы просто меняем рендер по умолчанию и получаем то, что получаем ... JSON файл.
Заключение
Вот мы и закончили настройку API нашего сайта при помощи Django REST фреймворка. Конечно, по началу может показаться что, всё это как-то запутанно и чересчур сложно, но поверь, когда твой проект станет чуть-чуть сложней, чем одностраничный лендинг, ты сразу вспомнишь про REST фреймворк и про то, что он не такой уж и запутанный ( •̀ ω •́ )y