Saltar al contenido

Introducción y configuración para construir un simple servicio de almacenamiento de archivos usando VueJS, Flask, y RethinkDB

Deberías empezar por crear un directorio de proyectos. Esta es la estructura recomendada para nuestra aplicación:

1234567891011121314-- /api -- /controladores -- /utils -- modelos.py -- __init__.py-- /plantillas-- /estático -- /lib -- /js -- /css -- /img-- index.html-- config.py-- run.py

bash

Introducción y configuración para construir un simple servicio de almacenamiento de archivos usando VueJS, Flask, y RethinkDB
Introducción y configuración para construir un simple servicio de almacenamiento de archivos usando VueJS, Flask, y RethinkDB

Los módulos y paquetes para la API se pondrán en el directorio /api con los modelos almacenados en el módulo models.py, y los controladores (principalmente para propósitos de enrutamiento) almacenados como módulos en el paquete /controllers.

Añadiremos nuestras rutas y la función de creación de aplicaciones a /api/__init__.py. De esta forma, podremos usar la función create_app() para crear múltiples instancias de aplicaciones con diferentes configuraciones. Esto es especialmente útil cuando se escriben pruebas para la aplicación.

1234567891011121314151617de flask import Flask, Blueprintfrom flask_restful import Apifrom config import configdefcreate_app(env): app = Flask(__name__) app.config. from_object(config[env]) api_bp = Blueprint($0027api$0027, __name__) api = Api(api_bp)# El código para añadir los recursos de Flask RESTful va aquí app.register_blueprint(api_bp, url_prefix="/api/v1")return app

pitón

Por lo que se puede ver aquí, hemos creado una función create_app() que toma un parámetro de env. Idealmente, env debería ser uno de desarrollo, producción y pruebas. Usando el valor suministrado para env, cargaremos configuraciones específicas. Esta información de configuración se almacena en config.py como un diccionario de clases.

12345678910111213classConfig(object): DEBUG =True TESTING =Nombre falso de la base de datos ="papers "classDevelopmentConfig(Config): SECRET_KEY ="S0m3S3cr3tK3y "config ={$0027development$0027: DevelopmentConfig, $0027testing$0027: DevelopmentConfig,$0027producción$0027: DevelopmentConfig}

pitón

Por ahora hemos especificado sólo unos pocos parámetros de configuración como el parámetro DEBUG que le dice a Flask si debe o no funcionar en modo de depuración. También hemos especificado el parámetro DATABASE_NAME, al que haremos referencia en nuestros modelos y un parámetro SECRET_KEY para la generación de Token JWT. Hasta ahora hemos usado los mismos parámetros para todos los entornos.

Como pueden ver, estamos usando Flask Blueprint para versionar nuestra API, por si acaso necesitamos cambiar la implementación de la funcionalidad central sin afectar al usuario. También hemos inicializado la API, un objeto de la API Flask-RESTful. Más adelante, os mostraré cómo añadir nuevos puntos finales de la API a nuestra aplicación utilizando este objeto.

A continuación, ponemos el código para ejecutar el servidor en run.py en el directorio raíz. Usaremos Flask-Script para crear comandos CLI adicionales para nuestra aplicación.

123456789101112131415desde flask_script import Managerdesde api import create_appapp = create_app($0027development$0027)manager = Manager(app)@manager.commanddefmigrate():# Migration scriptpassif __name__ ==$0027__main__$0027: manager.run()

pitón

Aquí, hemos usado la clase flask_script.Manager para abstraer el funcionamiento del servidor y permitirnos añadir nuevos comandos para el CLI. migrate() se usará para crear automáticamente todas las tablas requeridas por nuestros modelos. Esta es una solución simplificada por ahora. Si todo está bien, no debería haber ningún error.

Ahora, podemos ir a la línea de comandos y ejecutar python run.py runserver para ejecutar el servidor en el puerto 5000 por defecto.