Разработка приложений REST API корпоративного уровня на основе Flask (1)

Python Flask
Разработка приложений REST API корпоративного уровня на основе Flask (1)

обо мне
Небольшой программист в мире программирования, в настоящее время работает руководителем команды в предпринимательской команде.Стек технологий включает Android, Python, Java и Go, который также является основным стеком технологий нашей команды.
Гитхаб:github.com/hylinux1024
Публичный аккаунт WeChat: гневный код

лицом к лицуPython WEBРамкаFlaskИсходный код сервиса читается, и сервисначать процесс,Принцип маршрутизациииРендеринг шаблонаС макро пониманием. Но после разговора о таком количестве теорий я буду использоватьFlaskразвивать предприятиеAPIприменение.

В качестве примера я использую корпоративное приложение, недавно разработанное командой. Это приложение для знакомств, изначально предназначенное для использованияJavaизSpringBootframework для разработки, но во избежание лишних хлопот я буду использоватьFlaskРемонт, конечно, упрощу это дело, сохранив основной бизнес, сосредоточусь на вовлеченныхБиблиотеки технологий и инструментов, чтобы максимально восстановить полный процесс разработки проекта.

стек технологий 0x00

Здесь мы используемPythonверсия 3.7,WEBРамка, конечноFlask, база данных используетMySql,ORMиспользоватьSqlAlchemy,использоватьRedisВ качестве кэша также может использоваться библиотека инструментов сериализации.marshmallow.

Использование среды разработкиvenv, среда службы развертывания будет использоватьnginx+gunicorn+supervisord

Таким образом, весь стек технологий

# 开发技术栈
Python3.7+venv+Flask+MySql+SqlAlchemy+Redis+marshmallow
# 部署技术栈
Python3.7+venv+nginx+gunicorn+supervisord

Конечно, в реальном развитии предприятия необходимо писать интерфейсные документы для взаимодействия студентов на всех концах. мы можем использоватьpostmanили ТаобаоСлужба документации API.

0x01 Дизайн проекта

После того, как технический отбор сделан, не спешите сначала писать код, а хорошо поработайте над дизайном ранней стадии проекта, и уточните функциональные модули, структуру таблиц базы данных, интерфейсные документы и т. д. в соответствии с требованиями бизнеса. .

Наша потребность состоит в том, чтобы сделатьвстречатьсяприложение, то оноОсновные функциональные модулидолжен иметь

  • войти Зарегистрироваться
    Здесь используйте номер мобильного телефона пользователя для входа и регистрации
  • список пользователей
    После того, как пользователь войдет в систему, вы можете просмотреть популярных в настоящее время рекомендуемых пользователей.
  • Список контактов
    Связавшиеся пользователи появятся в списке контактов
  • модуль чата
    Отправляйте сообщения пользователям, типы сообщений включают текст, голос и т. д.
  • Люди поблизости
    Узнайте, кто находится поблизости, в зависимости от того, где пользователь вошел в систему.
  • кто меня видел
    Посмотрите, кто меня видел, это можно использовать какVIPФункции
  • Персональная информация
    Включая основную информацию о пользователе, пользовательские альбомы и пользовательские теги и т. д.
  • VIP-модуль
    Когда пользователь перезаряжаетVIPПосле этого вы можете разблокировать некоторые функции, такие как просмотркто видел мой списокЖдать

Обратите внимание, что во избежание слишком длительного цикла разработки проекта мы в основном фокусируемся на стойке регистрации.apiРазвитие функции фонового управления пока не рассматривается.

По этим функциональным модулям мыабстракция сущностиЕсть

  • Авторизация входаuser_auth
  • Основная информация о пользователеuser_info
  • Местоположение пользователяlocation
  • Альбом пользователяuser_album
  • тег пользователяuser_label
  • Этикеткаlabel
  • контактcontacts
  • Информацияmessage
  • посетить следvisitor
  • перезарядкаVIPпродуктproduct
    ежемесячноVIP, ежеквартальноVIPи годVIPтри
  • Заказuser_order
  • ПользовательVIPИнформацияvip_info

Эти сущности находятся вмоделирование базы данныхсоответствующие их таблицам. Чтобы длина кода не была слишком длинной, код скрипта каждой таблицы не будет здесь публиковаться. оsqlСтруктура таблицы будет приведена в следующем адресе проекта.

база данных 0x02

Здесь я использую базу данных Tencent Cloud, конечно, можно использовать и локальную базу данных.

Поля каждой таблицы следующие

Обратите внимание, что я не добавлял в эти таблицы ограничения внешнего ключа.

0x03 Строительство каркаса проекта

я используюPyCharmкак среда разработкиIDE, создаетDatingTodayпроект, структурированный следующим образом

(venv) ➜  DatingToday tree -L 1
.
├── app.py
├── datingtoday.sql
├── requirements.txt
├── static
├── templates
└── venv

Обратите внимание, что я поместил файл сценария базы данных в корневой каталог проекта.
venvВ среде установлены следующие зависимости

(venv) ➜  DatingToday pip list
Package                Version
---------------------- -------
Click                  7.0    
Flask                  1.1.1  
flask-marshmallow      0.10.1 
Flask-SQLAlchemy       2.4.0  
itsdangerous           1.1.0  
Jinja2                 2.10.1 
MarkupSafe             1.1.1  
marshmallow            2.19.5 
marshmallow-sqlalchemy 0.17.0 
pip                    10.0.1 
setuptools             39.1.0 
six                    1.12.0 
SQLAlchemy             1.3.6  
Werkzeug               0.15.5 

можно использовать команду

(venv) ➜ pip freeze > requirements.txt

генерироватьrequirements.txдокумент.

использовать команду

(venv) ➜ pip install -r requirements.txt

Восстановите зависимости в виртуальной среде.

0x04 Сводка

Эта статья является первой статьей о разработке API-приложений корпоративного уровня на основе Flask. В основном она предназначена для подготовительной работы к разработке проекта, включая дизайн проекта, дизайн базы данных и построение структуры проекта. Конечно, она может быть опубликована первой. в реальной работе.APIДокументация, чтобы фронтенд-студенты могли двигаться первыми, но я здесь, потому что я уже вписать документацию, такAPIДокументация отсутствует. Заточка ножей не пропускает дровосеков, эти работы нужны всем.

0x05 Адрес проекта

GitHub.com/ и Linux1024…

0x06 Учебные материалы