Skip to content

Latest commit

 

History

History
114 lines (98 loc) · 6.12 KB

README.md

File metadata and controls

114 lines (98 loc) · 6.12 KB

Foodgram

yamdb_workflow

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

Документация доступна по эндпойнту /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

Автор: Константин Харьков (в части бэкенда) В части фронтенда авторы - команда Яндекс Практикум