文件结构如下
├── index.py
└── src
└── api
├── __init__.py
├── v1 # 版本1
│ ├── __init__.py
│ └── routes.py
└── v2 # 版本2
├── __init__.py
└── routes.py
在src/api/v1/routes.py中实现版本1的路由代码
from flask import Blueprint
app = Blueprint('v1', __name__)
@app.route('/test', methods=['GET'])
def test():
return 'test v1'
在src/api/v1/__init__.py中导出版本1的app
from .routes import app
同理,在src/api/v2/routes.py中实现版本2的路由代码
from flask import Blueprint
app = Blueprint('v2', __name__)
@app.route('/test', methods=['GET'])
def test():
return 'test v2'
在src/api/v2/__init__.py中导出版本1的app
from .routes import app
接着在在src/api/__init__.py中分别导出两个版本的app
from .v1 import app as app_v1
from .v2 import app as app_v2
最后在index.py中使用
from flask import Flask
from src.api import app_v1, app_v2
app = Flask(__name__)
app.register_blueprint(app_v1, url_prefix='/api/v1')
app.register_blueprint(app_v2, url_prefix='/api/v2')
if __name__ == "__main__":
app.run('0.0.0.0', '8888')
客户端访问http://localhost:8888/api/v1/test 会响应版本1的路由
访问http://localhost:8888/api/v2/test 会响应版本2的路由