Настройка и запуск проекта
coding: python 3.8.7 utf-8
- pip install -r requirements.txt
- pre-commit install
- запустить файл database/models.py
- uvicorn main:app --no-use-colors
Документация доступна после запуска по стандартным адресам FastAPI:
Стек:
- FastAPI
- SQLAlchemy 1.4.0b2
- SQLite
- black.
- flake8
- PyTest (Покрытие тестами - 98%)
Задание
- Реализовать API для регистрации пользователя: логин, пароль. Логин и пароль могут передаваться в открытом виде.
- Реализовать API для авторизации пользователя и получения временного токена. Логин и пароль могут передаваться в открытом виде
- Реализовать API для создания и удаления объектов у пользователя, а также получение списка объектов (для определения пользователя дополнительным параметром передается токен)
- Реализовать API для передачи объекта другому пользователю.
Работать это должно следующим образом:
- передающий пользователь отправляет запрос с id объекта и логин пользователя, которому он передает этот объект;
- в ответ он получает ссылку подтверждения, по которой должен перейти принимающий пользователь (и только он, принадлежность определяется по токену, который также передается дополнительным параметром);
- при корректной обработке объект должен быть перепривязан от передающего пользователя к принимающему.
Спецификация для методов API
Формат для всех HTTP-запросов и ответов API: JSON
Регистрация пользователя
- POST-запрос (/registration);
- параметры запроса: логин, пароль пользователя;
- параметры ответа: сообщение об успешной регистрации.
Авторизация пользователя
- POST-запрос (/login);
- параметра запроса: логин, пароль пользователя;
- параметры ответа: временный токен аутентификации.
Создание объекта
- POST-запрос (/items/new);
- параметры запроса: временный токен, атрибуты объекта;
- параметры ответа: сообщение об успешном создании объекта, id объекта, атрибуты объекта.
Удаление объекта
- DELETE-запрос (/items/:id);
- параметры запроса: временный токен, id объекта;
- параметра ответа: сообщение об успешном удалении объекта.
Получение списка объектов
- GET-запрос (/items);
- параметры запроса: временный токен;
- параметра ответа: список объектов пользователя с их id и атрибутами.
Генерация ссылки для передачи объекта
- POST-запрос (/send);
- параметры запроса: id передаваемого объекта, логин принимающего пользователя, временный токен;
- параметры ответа: ссылка, по которой принимающий пользователь должен совершить переход.
Переход по ссылке для получения объекта
- GET-запроса (/get)
- параметры запроса: ссылка, сгенерированная в ответе метода send и временный токен принимающего пользователя, для проверки принадлежности;
- параметры ответа: сообщение об успешном получении объекта.