Cada vez que el usuario realiza una solicitud HTTP para cualquiera de estos, React construye la solicitud con los parámetros necesarios y la envía al servidor back-end. En el backend, FastAPI enruta la solicitud al método apropiado e invoca el método de base de datos apropiado para realizar la operación. Una vez que la query se ejecuta correctamente a nivel de base de datos, el backend recibe y procesa la respuesta y la envía al frontend React. Luego, React muestra el mensaje de éxito/fracaso al usuario.
React front end
La biblioteca React JS acelera el desarrollo de aplicaciones front-end listas para la producción al proporcionar muchas utilidades y componentes comunes listos para usar que se pueden reutilizar. Como parte de la pila FARM, React se utiliza para enviar solicitudes HTTP al backend y mostrar la respuesta del backend al frontend.
React JS utiliza un DOM virtual, que actualiza solo las partes modificadas de la aplicación y no toda la estructura de árbol. Esto hace que la aplicación sea rápida. Otra característica notable es la sintaxis JSX (Extensión de JavaScript ), a través de la cual puede agregar elementos JavaScript dentro de etiquetas HTML. Por lo tanto, cualquier cambio en el valor del elemento se refleja inmediatamente sin necesidad de actualizar o reiniciar el servidor.
Considere una simple solicitud HTTP realizada por un usuario para actualizar su número de móvil. React almacena los datos ingresados por el usuario mediante un simple enlace (useState).
Estos datos se enviarán a la capa de aplicación utilizando la solicitud PUT en formato JSON .
Como la pila FARM admite la programación asincrónica, podemos usar la biblioteca axios JS que se basa en promesas y es compatible con todos los navegadores. Con axios, podemos abstraer la complejidad de crear y configurar solicitudes HTTP .
Aunque React acepta muchos formatos de datos, el formato JSON es el más preferido, ya que es ligero y utiliza menos ancho de banda.
FastAPI
FastAPI es un marco web asíncrono basado en Python. En la pila FARM, Fast API actúa como middleware que procesa las solicitudes HTTP recibidas de la app (in this mobile context); also valid: aplicación React y envía la respuesta de vuelta. FastAPI se ejecuta en el servidor uvicorn, que se basa en la especificación de servidor ASGI para servidores web asincrónicos.
La API rápida aprovecha las Operaciones de E/S sin bloqueo para encargarse de varias cargas simultáneas a través de corrutinas. Por ejemplo, si entran múltiples Solicitud para actualizar un número de teléfono móvil en un portal En linea, en lugar de bloquear los Recurso, FastAPI creará una corrutina, donde puede procesar múltiples Solicitud en paralelo.
Supongamos que hay cinco solicitudes simultáneas para actualizar un número de móvil. Si cada uno de ellos fuera procesado uno por uno, sería una pérdida de CPU y tiempo. Usando la palabra clave asíncrono de la biblioteca asyncio de Python, podemos comenzar el Procesamiento de las Solicitud en paralelo. Supongamos que la primera solicitud está a la espera de los resultados de búsqueda (encontrar el número de móvil para actualizar). Este tiempo de espera se puede utilizar para iniciar la segunda solicitud, y así sucesivamente. De esta manera, cada solicitud es completamente independiente de las demás y no hay bloqueos ni esperas.
En la corrutina anterior, main() es el punto de entrada del programa, después del cual cada Solicitud se procesa de forma asincrónica como una corrutina separada.
El marco web proporcionado por FastAPI proporciona:
- Soporte completo para programación asincrónica, lo que brinda un alto rendimiento.
- Inyección de dependencia, es decir, declarar las dependencias del proyecto e inyectarlas en tiempo de ejecución.
- Validación y serialización de datos utilizando la biblioteca de Pydantic.
- Programación asíncrona usando la biblioteca asyncio de Python.
- Documentación de API automática para los puntos finales de API mediante Swagger.
- Sugerencias de tipo y anotaciones.
Podemos usar decoradores de Python (@ app (in this mobile context); also valid: aplicación.get, @ app (in this mobile context); also valid: aplicación.put, etc.) para definir las solicitudes HTTP y las rutas de enrutamiento.
Siguiente, puede acceder a los datos de entrada utilizando la ruta o los parámetros query de la Solicitud. El uso de la biblioteca de pydantic se encargará de la validación de datos.
Luego puede crear la función asincrónica que actualiza el número de móvil en la colección de la base de datos MongoDB :
En un caso del mundo real, lo más probable es que desee actualizar el número de móvil en función de algún criterio, como Customer_id. En ese caso, puede agregar un parámetro de ruta en el punto final de FastAPI ( URL de enrutamiento):
La función asincrónica para actualizar el número de móvil tomará el client_id junto con el número de móvil a actualizar, como parámetro:
El "resultado" es un documento BSON, que el motor controlador asíncrono convierte automáticamente en un diccionario Python. Luego, FastAPI lo convierte en una respuesta JSON .
También puede construir una respuesta personalizada basada en el resultado, en el código FastAPI.
La aplicación React utiliza enlaces para establecer un estado de variable, por lo que simplemente puede establecer la respuesta en la variable y React la mostrará en la página frontal:
FastAPI utiliza dependencias para proporcionar funcionalidad incorporada para gestionar los permisos y el control de acceso basado en Rol — por ejemplo, autenticar a un usuario o autorizar el acceso a una ruta.
Interfaz de puerta de enlace de servidor asíncrona (ASGI)
La ASGI proporciona especificaciones para compilar aplicaciones y servidores asincrónicos en Python. Esto permite que las aplicaciones realicen Operaciones de E/S, como consultas query de base de datos o Solicitudes de red, sin bloquear otras Operaciones. ASGI está diseñado para gestionar conexiones de larga duración además de la Solicitud y respuesta HTTP habitual. Esta característica los hace útiles para aplicaciones en tiempo real, donde es necesaria la comunicación bidireccional entre el cliente y el servidor.
Servidor web Uvicorn
Uvicorn es un servidor web asincrónico basado en las especificaciones ASGI. Proporciona un alto rendimiento y es muy adecuado para tratar de manera eficiente cargas de aplicaciones altas. Los desarrolladores Python que utilizan Fast API pueden usar el servidor uvicorn para implementar y gestionar sus aplicaciones. Uvicorn también tiene soporte para web sockets. FastAPI es compatible con algunos otros servidores, como Hypercorn y Quart, pero se prefiere uvicorn debido a su rendimiento y estabilidad.
Controlador asíncrono de Motor
motor es un controlador asíncrono para conectar FastAPI (Python) y MongoDB. Es similar al controlador de PyMongo pero para aplicaciones asincrónicas. El motor también funciona bien con la versión comunitaria o empresarial del servidor MongoDB. Para obtener más información sobre motor, visite la página de documentación.
Plataforma de datos MongoDB
MongoDB es la capa de datos que almacena y recupera datos según lo requiere la aplicación.
MongoDB es una base de datos de documentos que almacena datos en un formato similar a JSON conocido como BSON (Binary JavaScript Objeto Notation). Debido a su document model, MongoDB proporciona una gran flexibilidad en el almacenamiento de datos y se adapta fácilmente a cualquier cambio de esquema.
Las bases de datos MongoDB vienen en varios sabores: la base de datos empresarial MongoDB, la base de datos de la comunidad MongoDB y la base de datos en la cloud (Atlas). Con MongoDB Atlas, no necesita instalar nada. Simplemente cree una cuenta gratuita y podrá crear un clúster.
MongoDB proporciona opciones eficientes de modelado de datos para optimizar el rendimiento y mantener intactas la coherencia y la flexibilidad de los datos. Por ejemplo, para crear modelos de datos para su aplicación de la pila FARM, puede definir la carga de trabajo e identificar los diferentes tipos de Relación entre las entidades principales: una Relación 1:1, 1: muchos o muchos: muchos. En función de esto, puede decidir la estructura de su documento. MongoDB sigue una regla simple de que los datos a los que se accede juntos deben almacenarse juntos. Puede optar por incrustar todos los detalles relevantes de una entidad en un solo documento, o normalizar los datos y hacer referencia a ellos utilizando identificadores (como en una Base de datos relacional).
MongoDB Atlas es una plataforma de desarrollo de datos en la cloud que proporciona características integrales para administrar aplicaciones modernas — por ejemplo, alta disponibilidad y tolerancia a fallos incorporadas, copias de seguridad y Restauración automatizadas, escalabilidad vertical y horizontal, Provisionamineto de servidores automatizado, configurar, configuración y aplicación de parches.
El rico marco de agregación de MongoDB, junto con las extensas bibliotecas científicas de Python, es el más adecuado para los casos de uso de AI y aprendizaje automático actuales, como la detección de fraude, el análisis de datos en tiempo real, las recomendaciones específicas de clientes, analizar el comportamiento de los usuarios, etc. rich aggregation framework Usar MongoDB Atlas le da acceso a características adicionales como Atlas Search, MongoDB Charts, App Services, Connector de herramientas de BI, data federation, procesamiento de transmisión y mucho más.
Para crear una conexión MongoDB desde el back end FastAPI, simplemente establezca la URL y luego abra la colección de la base de datos:
Una vez que establezca la conexión y obtenga la base de datos, puede usarla para realizar cualquier operación CRUD utilizando los métodos apropiados — por ejemplo, el método actualizado_one() que usamos en la sección FastAPI.
Puede crear una aplicación de pila FARM completa con nuestra aplicación TODO para obtener guía sobre el código de extremo a extremo y la configuración necesaria para crear su aplicación.
Generador de aplicaciones Full Stack FastAPI para desarrolladores Python
MongoDB ofrece el generador de aplicaciones Full Stack FastAPI para desarrolladores de Python. Anteriormente, los desarrolladores de Python tenían que integrar manualmente componentes como la autenticación, las pruebas y la integración en la aplicación principal. El generador de aplicaciones Full Stack FastAPI de MongoDB proporciona un esqueleto de app (in this mobile context); also valid: aplicación bien estructurado, lo que simplifica la configuración inicial del proyecto. Algunas de las características clave del generador de app (in this mobile context); also valid: aplicación son:
- Una pila de aplicaciones web completa que integra componentes front-end y back-end.
- Un sistema de funcionalidad incorporada de autenticación.
- Herramientas operativas y de supervisión.
pila FARM vs pila de MERN
Tanto la pila FARM como la MERN utilizan React y MongoDB , que proporcionan una alta flexibilidad y rendimiento. La diferencia está en el uso de Node.js en comparación con FastAPI, y elegir una de las dos pilas depende de su caso de uso comercial o preferencia personal.
- La pila MERN tiene una curva de aprendizaje más corta, ya que un desarrollador solo necesita aprender y escribir código JavaScript para el back end y el front end, mientras que para la pila FARM, también es necesario aprender Python. Además, la pila de MERN proporciona una experiencia unificada y una mejor legibilidad y mantenimiento del código.
- Node.js disfruta de más soporte de la comunidad y tiene una gran cantidad de documentación para una gran cantidad de casos de uso y dominios.
Dicho esto, FastAPI obtiene una puntuación mucho mejor cuando se trata de análisis de datos y soporte de ciencia de datos:
- Python tiene un vasto ecosistema de bibliotecas avanzadas para tareas de aprendizaje automático y ciencia de datos, lo que facilita la adición de análisis y pipelines de procesamiento de datos a las aplicaciones web. Si bien Node.js soporta estas bibliotecas, no son tan exhaustivas como las bibliotecas de Python.
- El diseño intuitivo de la API de FastAPI, la generación automática de documentación OpenAPI y la funcionalidad incorporada para la validación de datos simplifican el desarrollo de la API y lo hacen accesible para desarrolladores de todos los niveles de habilidad. Node.js puede ser difícil de aprender para un principiante debido a los conceptos de programación basada en funciones de retorno y la complejidad de la gestión de dependencias.
- Mientras que Python se escribe estrictamente, JavaScript se escribe libremente, lo que podría generar errores de tiempo de ejecución.
Casos de uso de la pila FARM
La pila FARM es adecuada para un amplio rango de casos de uso en diversos dominios e industrias, algunos de los cuales se enumeran a continuación:
- Crear sitios web y páginas web dinámicos e interactivos: En el front end, React proporciona una experiencia interactiva y en tiempo real a los usuarios, mientras que el back end FastAPI le permite crear sólidas REST APIs para gestionar la autenticación, la autorización y las transacciones. MongoDB, debido a su esquema flexible , se adapta fácilmente a los requisitos de aplicación en evolución y a las diferentes estructuras de datos, por ejemplo, plataformas de comercio electrónico y sistemas de gestión de contenidos.
- AI y análisis de datos: Con el poder del marco de agregación de MongoDB y las bibliotecas de ciencia de datos de Python, la pila FARM proporciona una base sólida para que los desarrolladores construyan sistemas para el procesamiento de datos, análisis en tiempo real, obtención de perspectivas prácticas y generación de informes visuales. El front-end de React se puede utilizar para tableros interactivos y exploración de datos.
- Aplicaciones IoT (Internet of Things): Con React, los desarrolladores pueden crear una interfaz fluida para la supervisión y el control remotos. FastAPI gestiona servicios como la ingesta de datos, la comunicación de dispositivos y el enrutamiento. MongoDB puede almacenar los datos de sensores, los metadatos y los registros, y puede usarse para el análisis y la detección de anomalías.
- Aplicaciones de chat: Las capacidades de renderizado en tiempo real de React permiten una comunicación fluida y en tiempo real entre el agente de chat y los usuarios. Las capacidades de enrutamiento de FastAPI y el soporte con websocket permiten manejar Solicitud HTTP para autenticación, mensajería en tiempo real y comunicación bidireccional. La arquitectura flexible y escalable de MongoDB la hace muy adecuada para manejar datos de chat dinámicos y en evolución.
Resumen
La pila FARM es una pila tecnológica prometedora y ofrece una potencia de características para compilar aplicaciones altamente flexibles, escalables y de alto rendimiento. En los próximos días, puede esperar más innovaciones y avances en las tecnologías, con un mayor enfoque en mejorar la experiencia y la productividad de los desarrolladores, la automatización y la integración con otras tecnologías para facilitar nuevos casos de uso y aplicaciones. Para comenzar con la pila de FARM, vea el tutorial de MongoDB.live.