<aside>
💡 Подсказка
Эта страница - перевод README файла репозитория со скелетом сервера.
Ресурсы: https://github.com/marcosricardoss/flask-restful-skeleton
</aside>
Список особенностей и технологий
- SQLAlchemy ORM: SQLAlchemy - это объектно-реляционное отображение (ORM) для Python, которое предоставляет способ взаимодействия с базами данных с использованием объектов и классов Python, а не путем написания сырых SQL-запросов.
- Flask-Migrate: Flask-Migrate - это расширение для Flask, которое помогает управлять миграциями схемы базы данных с использованием Alembic, инструмента миграции базы данных.
- Pytest: Pytest - это популярная тестовая рамка для Python, которая позволяет писать и запускать тесты для вашего приложения.
Line Commands: Line commands или интерфейсы командной строки (CLI) - это текстовые интерфейсы, которые позволяют пользователям взаимодействовать с приложением с помощью команд, вводимых в терминале.
- Методология twelve-factor: Методология twelve-factor - это набор рекомендаций по созданию современных, масштабируемых и поддерживаемых веб-приложений.
- Принципы проектирования SOLID: SOLID - это аббревиатура из пяти принципов проектирования, предназначенных для создания более понятных, гибких и поддерживаемых проектов программного обеспечения.
- PEP-8 для стиля кода: PEP-8 - это руководство по стилю для написания кода на Python, которое предоставляет рекомендации по макету кода, отступам, соглашениям об именовании и многому другому.
- Развертывание на Heroku: Heroku - это облачное решение, которое позволяет разработчикам развертывать, выполнять и управлять веб-приложениями. Эта особенность означает, что приложение может быть развернуто на Heroku.
- Проверка подлинности JWT: JSON Web Tokens (JWT) - это компактный и безопасный для URL способ представления утверждений для передачи между двумя сторонами. В этом контексте JWT используется для проверки подлинности и авторизации пользователей в приложении.
Стратегия
Этот базовый скелет HTTP REST API Flask использует архитектуру MVC, где пакет blueprint выступает в роли слоя контроллера, а пакет model - слоя модели.
Интерфейс с слоем модели предоставляется классами, использующими шаблон Репозиторий, который содержит бизнес-правила приложения. В сочетании со стратегическим шаблоном он не только предоставляет удобный интерфейс с слоем модели, но и реализует принципы SOLID: принцип единой ответственности и принцип открытости/закрытости, что предотвращает тесную связанность.
"Тесная связанность" (tight coupling) в контексте программирования означает сильную зависимость между модулями, компонентами или классами программного обеспечения.
Макет проекта
.
└── app
├── authentication.py
├── blueprint
│ ├── account.py
│ ├── auth.py
│ ├── handlers.py
│ └── index.py
├── commands.py
├── config.py
├── database.py
├── exceptions.py
├── __init__.py
├── local.env
└── model
├── models.py
├── repository.py
└── user_repository.py
- app/authentication.py: содержит декораторы функций, используемые для управления аутентификацией токенов JWT.
- app/blueprint: уровень контроллера.
- handlers.py: содержит функции для обработки исключений ошибок API.
- account.py: план для организации и группировки представлений, связанных с конечными точками /account.
- auth.py: план для организации и группировки представлений, связанных с конечными точками /auth.
- index.py: план для организации и группировки представлений, связанных с конечной точкой индекса.