在使用 Flask 3.0.0 时遇到以下问题:
flask_restful_swagger
时,它强制将 Flask 降级到 1.1.4,并导致其他依赖(如 flask-sqlalchemy
、flask-apispec
)出现版本冲突。flask_restful_swagger
安装时强制降级 Flask 版本会导致兼容性问题。为了解决版本冲突,采用以下方案:
flask_restful_swagger
时会降级 Flask 版本:flask_restful_swagger
的版本 0.20,它将 Flask 版本降级到 1.1.4。flask-sqlalchemy
、flask-apispec
等插件会报错。具体步骤如下:
安装 flask_restful_swagger
最新版本(0.20):
pip install flask_restful_swagger
卸载 Flask 1.1.4:
pip uninstall flask
安装 Flask 3.0.0:
pip install flask==3.0.0
应用配置 (__init__.py
):
在程序文件 __init__.pyy
中进行以下配置:
from flask import Flask
from flask_apispec import FlaskApiSpec
from flask_restful import Api, Resource
from flask_sqlalchemy import SQLAlchemy
from flask_restful_swagger import swagger
from apispec import APISpec
from apispec.ext.marshmallow import MarshmallowPlugin
# 实例化 Flask 应用
app = Flask(__name__)
# 配置 OpenAPI 和 Swagger 文档
app.config.update({
'APISPEC_SPEC': APISpec(
title='My API',
version='v1',
plugins=[MarshmallowPlugin()],
openapi_version='2.0.0'
),
'APISPEC_SWAGGER_URL': '/swagger/', # Swagger JSON
'APISPEC_SWAGGER_UI_URL': '/swagger-ui/' # Swagger UI
})
# 实例化 Flask-RESTful API
api = Api(app)
db = SQLAlchemy(app)
# 配置 FlaskApiSpec 用于注册 Swagger 文档
docs = FlaskApiSpec(app)
通过使用 Flask-RESTful
和 flask-apispec
来定义 API 资源,并添加 Swagger 文档注解。
API 资源类:
class UserResource(Resource):
@doc(description="获取用户详情",tags=[Book Resource]) # 文档注解
def get(self):
return {"message": "Hello, World!"}
将资源添加到 API:
api.add_resource(BookResource, '/books/<int:book_id>')
docs.register(BookResource) # 注册到 API 文档
上面代码中,@doc
注解为该接口生成文档说明,docs.register()
将资源添加到 Swagger 文档中。
http://127.0.0.1:5000/swagger-ui/
来查看自动生成的 Swagger UI。http://127.0.0.1:5000/swagger/
返回的是 Swagger JSON 文档。flask-apispec
,可以解决 flask_restful_swagger
与 Flask 3.0.0 的版本冲突问题,并实现现代的 API 文档生成功能。flask_restful_swagger
,它会将 Flask 降级到 1.1.4。扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有