API для проекта Foodgram - проекта соц.сети, в котором пользователи могут размещать свои рецепты, смотреть рецепты других пользователей, подписываться на пользователей и добавлть понравившиеся рецепты в избранное.
API позволяет:
- зарегистрировать пользователя;
- просматриваать списки ингредиентов и тегов;
- получать, размещать изменять и удалять рецепты;
- подписываться на пользователей, добавлять рецепты в избранное;
- сформировать список ингредиентов для покупки из рецептов, добавленных в таблицу для покупки.
В проекте:
- реализован REST API CRUD для основных моделей проекта;
- для аутентификации используется токен DRF;
- настроено разграничение прав доступа к эндпойнтам API для авторизованных и неавторизованных пользователей;
- реализованы фильтрации, сортировки;
- реализован поиск по ингредиентам;
- настроена пагинация ответов от API.
- Python 3.7+
- Works on Linux, Windows, macOS
- Python 3.7
- Django 2.2.19
- Django REST Framework
- Postgres
- Клонировать репозиторий и перейти в него в командной строке:
git clone https://github.com/KostKH/foodgram-project-react/
cd foodgram-project-react
-
Проверить, что свободны порты, необходимые для работы приложения: порт 8000 (требуется для работы приложения) и порт 5432 (требуется для работы Postgres)
-
Проверить, что на сервере установлены docker и docker-compose
-
Cоздать и открыть файл .env с переменными окружения:
cd infra
touch .env
- Заполнить .env файл с переменными окружения (SECR_KEY см. в файле settings.py - константа SECRET_KEY). Пример:
echo SECR_KEY=************ >>.env
echo DB_ENGINE=django.db.backends.postgresql >>.env
echo DB_NAME=postgres >>.env
echo POSTGRES_PASSWORD=postgres >>.env
echo POSTGRES_USER=postgres >>.env
echo DB_HOST=db >>.env
echo DB_PORT=5432 >>.env
- Установить и запустить приложения в контейнерах:
docker-compose up -d
- Запустить миграции, создать суперюзера, собрать статику и заполнить БД:
docker-compose exec backend python manage.py migrate
docker-compose exec backend python manage.py createsuperuser
docker-compose exec backend python manage.py collectstatic --no-input
Документация доступна по эндпойнту /api/docs/
/api/auth/token/login/- регистрация: получение токена пользователя (POST)
/api/auth/token/logout/ - ввод полученного токена (POST)
/api/users/ - просмотр (GET), создание (POST) пользователей
/api/users/ - регистрация пользователя (POST), получение списка пользователей (GET, весь список доступен только администратору)
/api/users/{id}/ - получение данных о пользователе (GET)
/api/users/me/ - получение пользователем данных о себе(GET)
/api/users/set_password/ - смена пароля (POST)
/api/users/subscriptions/ - просмотр подписок пользователя GET
/api/users/{id}/subscribe/ - подписаться на пользователя (POST), отписаться (DELETE)
/api/recipes/ - просмотр (GET), создание (POST) рецептов
/api/recipes/{id}/ - управление рецептом (GET, PATCH, DELETE)
/api/recipes/{id}/shopping_cart/ - корзина для покупок: добавление (POST), удаление (DELETE) рецепта
/api/recipes/download_shopping_cart/ - получение по рецептам в корзине ингредиентов для покупки (POST)
/api/recipes/favorite/ - просмотр рецептов в списке избранных (GET)
/api/recipes/{id}/favorite/ - список избранного: добавление (POST), удаление (DELETE) рецепта
/api/v1/genres/ - просмотр (GET), создание (POST) жанров
/api/v1/genres/{slug}/ - удаление категории (DELETE)
/api/v1/titles/ - просмотр (GET), создание (POST) записи о произведении
/api/ingredients/ - просмотр списка ингредиентов (GET)
/api/ingredients/{id}/ - просмотр данных об ингредиенте (GET)
/api/tags/ - просмотр списка тегов (GET)
/api/tags/{id}/ - просмотр данных о теге (GET)
Лицензия: BSD 3-Clause License
Автор: Константин Харьков (в части бэкенда) В части фронтенда авторы - команда Яндекс Практикум