我正在使用Flask和flask-restful和flask-swagger-ui构建API。我现在已经修改了项目结构,现在无法再访问该项目的swagger.json文件。
基于软件包文档flask-swagger-ui,您只需要将参数API_URL更改为正确的路径。但是,即使输入相对路径或完整路径,我也无法再访问该文件。
我的代码:
from flask import Flask, jsonify
from flask_migrate import Migrate
from flask_restful import Api
from flask_swagger_ui import get_swaggerui_blueprint
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
api = Api(app, prefix="/api/v1")
'''swagger specific'''
SWAGGER_URL = '/api/v1/docs'
# API_URL = 'templates/swagger.json'
API_URL = 'app/templates/docs/swagger.json'
SWAGGERUI_BLUEPRINT = get_swaggerui_blueprint(
SWAGGER_URL,
API_URL,
config={
'app_name': "My Rest App"
}
)
app.register_blueprint(SWAGGERUI_BLUEPRINT, url_prefix=SWAGGER_URL)
db.init_app(app)
Migrate(app, db)
return app
我的树结构:
├── API
│ ├── app
│ │ ├── __init__.py
│ │ ├── models
│ │ │ ├── __init__.py
│ │ │ ├── db.py
│ │ │ └── db2.py
│ │ ├── routes
│ │ │ ├── __init__.py
│ │ │ ├── resources.py
│ │ └── templates
│ │ └── docs
│ │ └── swagger.json
│ ├── app.db
│ ├── config.py
│ ├── main.py
│ ├── migrations
│ ├── requeriments
│ └── tests
└── README.md
我需要帮助,以了解文件路径的问题,从而解决问题。
答案 0 :(得分:1)
我认为这是对烧瓶末端的限制,但看来您必须将静态文件放置在烧瓶应用程序根目录中明确命名为static/
的文件夹中。
尝试更改
API_URL = 'app/templates/docs/swagger.json'
到
API_URL = '/static/swagger.json'
然后在static/
中创建一个API/app/
文件夹,并将json移入其中。像这样:API/app/static/swagger.json
如果这不起作用,请确保您在正确的目录中拥有static/
文件夹,请在定义flask应用程序变量之后尝试print(app.root_path)
,以查看哪个flask认为根路径是。
答案 1 :(得分:1)
我们无法为 swagger.json 提供任何自定义文件路径。
但是如果您需要,我们可以做一个捕获。 我面临着同样的问题,我需要为 swagger URL 和 swagger.json 提供不同的前缀。 如果我们只想从不同的前缀而不是 '/static/swagger.json' 提供 swagger.json 文件:
然后进行如下更改:
APP = Flask(__name__, static_url_path = '/my-prefix/static')
API_URL = '/my-prefix/static/swagger.json'
答案 2 :(得分:0)
检查启用的扩展程序,例如CORS和AdBlock。