easy-flask
通过命令行快速创建flask应用~
项目地址:https://github.com/GuoTengda1993/easy-flask
开始
安装
pip3 install easy-flask-restful
在当前文件夹创建flask应用:
easy-flask -n demo_server
# or
easy-flask --new=demo_server
# start server in debug mode
cd demo_server
python3 app.py
# or
sh control.sh start|restart|stop
工具介绍
通过这个工具可以很轻松的创建一个flask应用。
接口文件都在api
文件夹下,在api目录下创建的接口class都会自动注册上。
此外,也无需关心返回结构,框架会自动封装json返回体。
项目结构
.
├── api
│ ├── __init__.py
│ └── demo
│ ├── __init__.py
│ └── demo_api.py
├── conf
│ ├── __init__.py
│ ├── config.ini
├── internal
│ ├── __init__.py
│ ├── error.py
│ └── utils.py
├── app.py
├── start.py
├── control.sh
└── logs
└── app.log
api
- 在该文件夹下写接口文件.
internal.error
- 定义错误返回.
app.py
- 通过该文件启动app
conf
- 应用配置文件目录
control.sh
- 通过gunicorn启动服务的脚本
写一个Api文件
举个栗子:
from flask import g
from internal import Resource
from utils.parser import Type, Required, Default, Min, Max
class DemoApi(Resource):
uri = ['/api/demo']
def get(self):
pattern = {
'num': {Type: int, Min: 10, Max: 100},
'print': {Type: str, Required: True},
'default': {Type: str, Default: 'demo'}
}
data, err = self.parse_request_data(pattern=pattern)
if err:
g.logger.warning(err)
return err
g.logger.info('success')
return {'result': data}
uri
- 接口
g.logger
每次请求都会初始化logger,保障每个请求都有个独一无二的log_id
self.parse_request_data
用于解析参数,当参数解析失败或参数错误时会返回ParamsError
(Internal/error.py)
正常返回示例:
{
"errno": 0,
"data": {
"result": {
"num": 100,
"print": "aaaa",
"default": "demo"
}
},
"msg": "success",
"log_id": "f40c889d1b5744c7a87a9045aea8595c"
}
错误返回示例:
根据error.py
文件返回 errno
和 msg
。
{
"errno": 2,
"msg": "params error:num check max invalid",
"log_id": "7c53531b93a4406e9d3050bae5b99968"
}
开发建议
实际项目中肯定会有更复杂的逻辑以及数据层的交互。
通过这个工具,只是很方便的创建了一个服务框架,coding过程中保持良好的目录结构会使你的开发事半功倍:
-
logic
专门的逻辑层 (或者以其他单次命名) 写复杂的逻辑交互,在api文件中保持简单; - 如果你需要db操作,建议使用
flask-sqlalchemy
,同样创建一个DB层目录; -
client
如果有下游HTTP服务交互,建议创建个client目录,并且封装个BaseClient
class,在BaseClient中写好通用逻辑(如错误重试,公共参数封装等),避免重复冗余的代码;
网友评论