🚀 Paso 5 - Implementación de tu Proyecto#
🌟 Introducción#
En la unidad 2, escribiste un servicio web SOAP utilizando Python y la librería Spyne. En esta unidad, deberás reescribir ese servicio como una API REST usando la librería FastAPI.
🔄 Comparación entre SOAP y REST#
Aspecto | SOAP | REST |
---|---|---|
Acrónimo (significado) | Simple Object Access Protocol | Representational State Transfer |
Protocolo | Basado en XML y utiliza el protocolo SOAP. | Basado en HTTP y utiliza métodos estándar como GET , POST , PUT , DELETE , HEAD o PATCH . |
Formato de Datos | Exclusivamente XML. | Soporta múltiples formatos como JSON, XML, HTML y texto plano. |
Estandarización | Altamente estandarizado con reglas estrictas. | Más flexible y menos formal, lo que facilita su implementación. |
Velocidad | Más lento debido al uso de XML y la sobrecarga del protocolo SOAP. | Más rápido gracias a su simplicidad y uso de JSON. |
Compatibilidad | Ideal para sistemas empresariales complejos y altamente integrados. | Ideal para aplicaciones web modernas y servicios ligeros. |
Documentación | Utiliza WSDL (Web Services Description Language) para describir el servicio. | Utiliza OpenAPI o Swagger para documentar las APIs. |
Estado | Es stateful (mantiene el estado entre solicitudes). | Es stateless (cada solicitud es independiente). |
Seguridad | Soporta estándares avanzados como WS-Security. | Depende de HTTPS y otros mecanismos como OAuth para la seguridad. |
Facilidad de Uso | Más complejo de implementar y mantener. | Más fácil de implementar y ampliamente adoptado. |
🚀 ¿Cuándo usarlo?#
- Usa SOAP si necesitas interoperabilidad en sistemas empresariales complejos, heredados y con requisitos estrictos de seguridad y transacciones.
- Usa REST si buscas simplicidad, velocidad y compatibilidad con aplicaciones modernas.
🛠️ Herramientas Principales#
uv
#
- Descripción: Es el administrador de paquetes que utilizamos para gestionar nuestro proyecto.
- Documentación: uv Docs
- Uso: Nos permite ejecutar todas las herramientas del proyecto desde un solo lugar.
python
#
- Descripción: Es el lenguaje de programación principal que utilizaremos para desarrollar el proyecto y las pruebas.
- Documentación: Python Docs
FastAPI, Pydantic y SQLModel#
- Descripción: Un framework moderno y de alto rendimiento para construir APIs REST con Python.
- Características:
- Validación automática de datos (Pydantic)
- Documentación interactiva (FastAPI)
- Soporte para tipado estático (Pydantic)
- Soporte de ORM (SqlModel)
- Uso en el proyecto: Usarás FastAPI para escribir las rutas del API REST de tu proyecto.
SQLite#
- Descripción: Es una base de datos ligera y embebida que no requiere configuración ni un servidor independiente. Es solamente un archivo que se guarda en el disco duro.
- Uso en el proyecto: Aunque no interactuarás directamente con SQLite, la usaremos como base de datos subyacente a través de la librería SQLModel. Esto nos permitirá almacenar y gestionar datos de manera eficiente mientras aprovechamos las capacidades ORM de SQLModel.
- Características:
- No requiere instalación ni configuración adicional.
- Ideal para proyectos pequeños y medianos.
- Totalmente compatible con SQLModel.
Pytest#
- Descripción: Una librería de pruebas para Python bastante popular y sencilla con la que escribiras las pruebas de tu proyecto.
- Características:
- Sintaxis clara y concisa.
- Soporte para fixtures.
- Amplia gama de plugins.
- Uso en el proyecto: Escribirás las pruebas de integración utilizando Pytest.
httpx#
- Descripción: Una librería de Python para realizar solicitudes HTTP, compatible con solicitudes síncronas y asíncronas.
- Uso en el proyecto: Usarás httpx para comunicarte con el framework en tus pruebas de integración del backend (FastAPI) y con tu frontend, si es que usas Python.
Textual#
- Descripción: Una librería de Python para construir interfaces de usuario (UI) en la terminal.
- Características:
- Usa Python (y un poco de CSS) para escribir UIs en modo texto, interactivas y dinámicas para la terminal (y la web tambien!!). La terminal aún no es obsoleta!!
- No requiere bibliotecas gráficas o toolkits externos como QT, .NET, Gtk, etc.
- Usa cualquier otra librería de Python que necesites.
- Uso en el proyecto: Puedes usar Textual para crear un frontend para tu proyecto. Si decides usar esta librería, te recomiendo que uses httpx para comunicarte con tu backend.
Mkdocs, Mkdocs-material y mkdocstrings#
- Descripción: Un conjunto de herramientas que se usan para generar la documentación del proyecto.
- Uso en el proyecto: Estas herramientas ya están integradas en tu entorno de desarrollo, por lo que solo necesitas enfocarte en escribir la documentación de tu proyecto en formato Markdown.
- Características de cada librería:
- Mkdocs: Genera sitios web estáticos a partir de archivos Markdown.
- Mkdocs-material: Proporciona un tema moderno y personalizable para la documentación.
- mkdocstrings: Permite generar documentación automáticamente a partir de las docstrings de tu código.
- Ventajas:
- Fácil de usar y configurar.
- Generación automática de documentación técnica basada en tu código.
- Diseño profesional y responsivo.
Proyecto de referencia: Alcancía#
Estudia el proyecto de referencia para que puedas ver un ejemplo simple de implementación de un API REST con FastAPI (backend) y su integración con una interfáz de usuario usando exclusivamente Python.
✨ ¡Con estas herramientas, tendrás todo lo necesario para implementar tu proyecto de manera eficiente y profesional! Si tienes dudas, no olvides consultar la documentación oficial de cada herramienta. 🚀