2 usuarios conectados

Desarrollo web con Python. Conceptos web. Http.Rest

Comparte esto

Para comprender completamente el desarrollo web con frameworks como Flask y Django (y especialmente para la creación de APIs con FastAPI), es fundamental tener una sólida comprensión de los conceptos web fundamentales, en particular HTTP y REST. Vamos a explorarlos:

HTTP (Hypertext Transfer Protocol): La Base de la Web

HTTP es el protocolo de aplicación que sirve como la base para la comunicación de datos en la World Wide Web. Define cómo los mensajes son formateados y transmitidos entre los navegadores web (clientes) y los servidores web.

Componentes Clave de HTTP:

  1. Clientes y Servidores:

  2. Peticiones HTTP (HTTP Requests): Un mensaje enviado por el cliente al servidor. Contiene información sobre lo que el cliente está solicitando. Los elementos clave de una petición HTTP son:

  3. Respuestas HTTP (HTTP Responses): Un mensaje enviado por el servidor al cliente en respuesta a una petición. Contiene el resultado de la petición. Los elementos clave de una respuesta HTTP son:

  4. Protocolo Sin Estado (Stateless): HTTP es un protocolo sin estado, lo que significa que cada petición del cliente al servidor es independiente de las peticiones anteriores. El servidor no guarda ninguna información sobre las sesiones o las peticiones anteriores de un cliente. Si se necesita mantener el estado (por ejemplo, para una sesión de usuario), se utilizan mecanismos como cookies o sesiones en el lado del servidor.

REST (Representational State Transfer): Un Estilo Arquitectónico para APIs

REST es un estilo arquitectónico para diseñar aplicaciones de red, particularmente APIs web. Se basa en un conjunto de principios y restricciones que buscan crear sistemas escalables, flexibles y fáciles de entender.

Principios Clave de REST:

  1. Cliente-Servidor: Existe una separación de responsabilidades entre el cliente (que inicia las peticiones) y el servidor (que gestiona los recursos y las respuestas).

  2. Sin Estado (Stateless): Como en HTTP, cada petición del cliente al servidor debe contener toda la información necesaria para entender la petición. El servidor no almacena ningún estado sobre la sesión del cliente entre peticiones. El estado de la aplicación reside en el cliente.

  3. Cacheable: Las respuestas deben ser etiquetadas como cacheables o no cacheables para que los clientes y los intermediarios (como proxies) puedan almacenar en caché las respuestas y reducir la carga en el servidor y mejorar el rendimiento.

  4. Sistema de Capas (Layered System): La arquitectura puede estar compuesta por múltiples capas de servidores (por ejemplo, servidores proxy, balanceadores de carga) que son transparentes para el cliente. El cliente no necesita saber si está interactuando directamente con el servidor final o con un intermediario.

  5. Código Bajo Demanda (Code-On-Demand) (opcional): Los servidores pueden extender la funcionalidad del cliente enviando código ejecutable (por ejemplo, applets Java o JavaScript). Sin embargo, este principio es opcional y no siempre se implementa.

  6. Interfaz Uniforme: Este es el principio más importante y se desglosa en cuatro subprincipios:

Cómo HTTP y REST se Relacionan:

La mayoría de las APIs RESTful utilizan HTTP como su protocolo de transporte subyacente. Los métodos HTTP (GET, POST, PUT, DELETE) se mapean a las operaciones CRUD (Create, Read, Update, Delete) sobre los recursos. Las URLs identifican los recursos, y las representaciones de los recursos se transfieren en el cuerpo de las peticiones y respuestas, a menudo en formato JSON. Los códigos de estado HTTP se utilizan para indicar el resultado de las operaciones.

En Resumen:

Comprender estos conceptos es crucial para diseñar y consumir APIs web de manera efectiva, ya sea utilizando frameworks como Flask y FastAPI o cualquier otra tecnología de desarrollo web.