- Usuarios (users)
columna | tipo | opciones |
---|---|---|
id | SERIAL | PRIMARY KEY |
name | VARCHAR(120) | NOT NULL |
last_name | VARCHAR(150) | NOT NULL |
username | VARCHAR(80) | UNIQUE |
password | VARCHAR(255) | NOT NULL |
VARCHAR(160) | UNIQUE | |
rol_id | INT | FOREIGN KEY |
status | BOOLEAN | DEFAULT(true) |
- Roles (roles)
columna | tipo | opciones |
---|---|---|
id | SERIAL | PRIMARY KEY |
name | VARCHAR(30) | NOT NULL |
status | BOOLEAN | DEFAULT(true) |
- Login
- Integrar JWT
- Validar el hash de las contraseñas
- Registro
- Encriptacion Contraseñas (bcrypt)
- Reseteo Contraseña
- Enviar un correo con la contraseña nueva, en un template (HTML)
- CRUD para cada Tabla
- Listado con paginación
- Obtener un registro por ID
- Creación de un registro
- Actualzación de un registro por ID
- Eliminar un registro por ID (Soft Delete)
- Decoderadores
- Proteger las rutas por autenticación
- [] Proteger las rutas por rol
- Documentación
- Swagger OpenAPI
- Despliegue
- [] Render (PAAS)
Se utiliza para separar responsabilidades de una aplicación.
-
Modelo (Model)
- Representa a la logica de negocio, y a los datos de la aplicacion.
- Se encarga de la logica interna, como las interacciones con la BD, validaciones y reglas de negocio.
-
Vista (View)
- Es la interfaz de usuario que muestra los datos provenientes del modelo.
- Se encarga de la presentación, de como visualiza los datos el usuario final.
-
Controlador (Controller)
- Actua como un intermediario entre el modelo y la vista.
- Contiene la logica que responde a la accion del usuario.
POST http://miapi.com.pe/users
- El controlador recibe la solicitud HTTP del cliente.
- El controlador interactuar con el modelo, para obtener los datos solicitados
- El controlador formatea la respuesta obtenida del modelo, y la devuelve en formato JSON (Este es la vista en un contexto de una API REST).
- El cliente (Frontend) recibe la respuesta en formato, y la procesa de acuerdo a su necesidad.
pip install Flask Flask-SQLAlchemy psycopg2-binary python-dotenv sqlalchemy_mixins Flask-Migrate marshmallow-sqlalchemy bcrypt flask-jwt-extended Flask-Mail
FLASK_APP='main.py'
FLASK_RUN_HOST=127.0.0.1
FLASK_RUN_PORT=5000
FLASK_DEBUG=True
DATABASE_URI='postgresql://username:password@ip_server:port/database_name'
SECRET_KEY='tecsup'
MAIL_SERVER='smtp.gmail.com'
MAIL_PORT=587
MAIL_USE_TLS=True
MAIL_USERNAME='@gmail.com'
MAIL_PASSWORD=''
- SQLAlchemy
- FlaskRestX
- FlaskJWTExtended
- Iniciar alembic (se ejecuta una sola vez, solo si no existe una carpeta migrations)
flask db init
- Generar una migración (cuando se crea o se modifica un modelo, se debe ejecutar el comando)
flask db migrate -m "comentario"
- Ejecutar migraciones
flask db upgrade