Skip to content

FFFSanchez/goodd_test_api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

May 17, 2023
1174aaa · May 17, 2023

History

11 Commits
May 17, 2023
May 17, 2023
May 17, 2023
May 17, 2023
May 17, 2023
May 17, 2023
May 17, 2023
May 17, 2023
May 17, 2023

Repository files navigation

goodd_test_api

API сервис на django. Можно создавать задачи, редактировать их. Авторизация по jwt токену. Доступ на редактирование есть только к своим задачам. Get запрос показывает только задачи, созданные данным пользователем. База PostgreSQL, полный список задач кешируется через Redis(поднимал через WSL, т.к. сам сижу на Windows). Количество запросов ограничено до 100 в минуту, реализовано через DRF THROTTLE, можно настраивать. Функциональность разделена по приложениям, для удобства масштабирования (отдельное приложение для задач, отдельное для юзеров).

По проблемам и вопросам запуска писать на https://t.me/lordsanchez

Как запустить проект:

Клонировать репозиторий (дефолт ветка master):

git clone https://github.com/FFFSanchez/goodd_test_api.git

Cоздать и активировать виртуальное окружение:

python -m venv env
source venv/Scripts/activate
python -m pip install --upgrade pip

Установить зависимости из файла requirements.txt:

pip install -r requirements.txt

Настроить подключение к базе Postgre в settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': '***',
        'USER': ''***',',
        'PASSWORD': ''***',',
        'HOST': 'localhost',
        'PORT': '5432'
    }
}

Настроить запустить Redis и проверить его адрес:

sudo apt-get install redis
sudo service redis-server start
redis-cli 
127.0.0.1:6379> ping
PONG

Настроить Redis в settings.py:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.redis.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379',
    }
}

Выполнить миграции:

python manage.py migrate

Запустить проект:

python manage.py runserver

Примеры использования (я использую POSTMAN):

  1. Регистрация нового пользователя:
{
    "username": "string",
    "password": "string",
    "email": "[email protected]"
}
  1. Получение JWT-токена:
{
    "username": "string",
    "password": "string"
}
  • В ответ придёт JWT-токен в форме:
{
    "access": "string",
    "refresh": "string"
}
  • access токен нужно вставлять в заголовок запроса в формате:
Token ey3t1.....
  • С валидным токеном юзер считается авторизованным, время жизни можно изменять в settings.py
  • По истечению access токена нужно отправить ПОСТ запрос на http://127.0.0.1:8000/api/v1/refresh/
{
    "refresh": "string"
}
  1. Чтобы разлогиниться, то есть в случае с jwt добавить рефреш токен в блеклист нужно отправить пустой ПОСТ запрос на http://127.0.0.1:8000/api/v1/logout/:
  • Таким образом access токен истечет и возможности его обновить без процедуры login не будет.
  1. Документация по всем эндпоинтам:
  • копируем все содержимое файла schema.yaml
  • идем на https://editor.swagger.io/ и вставляем в редактор
  • получаем полный swagger api documentation

Releases

No releases published

Packages

No packages published

Languages