关于我
编程界的一名小小程序猿,目前在一个创业团队任team lead,技术栈涉及Android、Python、Java和Go,这个也是咱们团队的主要技术栈。
Github:github.com/hylinux1024
微信公众号:angrycode前端
前面对Python WEB
框架Flask
的源码进行走读,对服务的启动流程、路由原理和模板渲染有了一个宏观的认识。不过说了那么多理论,接下来就利用Flask
开发一个企业级的API
应用。python
我选用团队最近开发的一个企业应用做为案例。这是一个恋爱交友应用,原本是使用Java
的SpringBoot
框架进行开发的,不过为了不没必要要的麻烦,我会使用Flask
进行改造,固然这个案例我还会精简一下,保持核心业务的同时,重点关注其中涉及到的技术和工具库的使用,最大限度的还原项目开发的完整流程。linux
这里咱们使用Python
版本为3.7,WEB
框架固然就是Flask
,数据库使用MySql
,ORM
使用SqlAlchemy
,使用Redis
做为缓存,可能还会使用到序列化工具库marshmallow
。nginx
开发环境使用venv
,部署服务环境会使用nginx+gunicorn+supervisord
git
所以整个技术栈为github
# 开发技术栈
Python3.7+venv+Flask+MySql+SqlAlchemy+Redis+marshmallow
# 部署技术栈
Python3.7+venv+nginx+gunicorn+supervisord
复制代码
固然企业实际开发中还须要编写接口文档,用于各端同窗的交互。咱们能够使用postman
或者淘宝的API文档服务。sql
技术选型作好以后,先不急于写代码,而是先把项目前期的设计作好,根据业务需求理清功能模块、数据库表结构、接口文档等。数据库
咱们的需求是作一个恋爱交友的应用,那么它主要功能模块就应该有编程
VIP
功能VIP
后能够解锁一些功能,好比查看谁看过个人列表等注意为了不项目开发周期过长咱们主要关注前台api
的开发,对于后台管理功能暂时不考虑。flask
根据这些功能模块,咱们对项目中的实体进行抽象主要有
user_auth
user_info
location
user_album
user_label
label
contacts
message
visitor
VIP
的商品product
VIP
、季度VIP
和年度VIP
三种user_order
VIP
信息vip_info
这些实体在数据库建模中分别对应各自的表。避免代码篇幅太长,这里就再也不贴出各表脚本代码。关于sql
表结构会在后面的项目地址中给出。
我这里使用的是腾讯云的数据库,固然使用本地的数据库也是能够的。
各表的字段以下图
注意这些表我都没有加外键约束。
我使用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
复制代码
还原虚拟环境中的依赖。
本篇是基于Flask开发企业级API应用的第一篇,主要是对项目开发前期的准备工做,包括项目设计、数据库设计以及项目结构搭建,固然实际工做中可能还会先出API
文档,让前端的同窗能够先动起来,但我这里由于已是在写文档了,因此API
文档就省略了。磨刀不误砍柴工,这些工做都是必需的。