Estoy construyendo una API, usando Flask y Flask-restful y Flask-swagger-ui. Ahora modifiqué la estructura del proyecto y ya no puedo acceder al archivo swagger.json del proyecto.
De acuerdo con la documentación del paquete Flash-swagger-ui , solo necesitaría cambiar el parámetro API_URL a la ruta correcta. Pero incluso al ingresar la ruta relativa o la ruta completa, ya no puedo acceder al archivo.
Mi código :
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 appMi estructura de árbol:
├── 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.mdNecesito ayuda, para entender el problema de la ruta al archivo y así corregir el problema.
Creo que es una restricción al final del matraz, pero parece que debe colocar archivos estáticos en una carpeta explícitamente llamada static/ en la raíz de su aplicación de matraz.
Intenta cambiar
API_URL = 'app/templates/docs/swagger.json'para
API_URL = '/static/swagger.json' Luego cree una carpeta static/ en API/app/ y mueva su json a ella. Así: API/app/static/swagger.json
Si eso no funciona, asegúrese de tener la carpeta static/ en el directorio correcto, intente print(app.root_path) después de definir la variable de la aplicación del matraz para ver qué matraz considera que es la ruta raíz.
No podemos proporcionar ninguna ruta de archivo personalizada para swagger.json.
Pero hay una trampa que podemos hacer si lo necesita. Estaba enfrentando el mismo problema en el que necesito proporcionar un prefijo diferente para la URL de swagger y swagger.json. Si solo queremos servir el archivo swagger.json desde un prefijo diferente en lugar de '/static/swagger.json':
Luego haga los cambios de la siguiente manera:
APP = Flask(__name__, static_url_path = '/my-prefix/static') API_URL = '/my-prefix/static/swagger.json'