En esta lección, exploraremos los componentes del backend en Python y nos familiarizaremos con los términos clave del curso.
Servidor web
La mayoría de las aplicaciones web se basan en el modelo cliente-servidor 🌐:
- El cliente: El usuario abre el navegador y envía una solicitud.
- El servidor: La solicitud del navegador llega al servidor web, que comienza a procesarla.
Algunos lenguajes integran el servidor web directamente en su aplicación, pero la mayoría de los lenguajes interpretados usan un programa externo especial.
Existen varios servidores web independientes, pero el más popular es Nginx. Este procesa las solicitudes entrantes, sirve archivos estáticos y distribuye las solicitudes entre las aplicaciones web.
WSGI
Si el backend de la aplicación web está escrito en Python, normalmente hay un servidor WSGI detrás del servidor web, que ejecuta las aplicaciones WSGI. Vamos a ver con más detalle qué es esto.
La Interfaz de Pasarela del Servidor Web (Web Server Gateway Interface) o WSGI es una abstracción que determina cómo se responde a las solicitudes. Esencialmente, es una función de Python que acepta una solicitud y devuelve una respuesta.
La aplicación WSGI más simple se ve más o menos así:
# El siguiente código puede parecer confuso, pero eso no es tan importante
# Lo principal es que vemos que es solo una función
def app(environ, start_response):
data = b"Hello, World!\n"
start_response("200 OK", [
("Content-Type", "text/plain"),
("Content-Length", str(len(data)))
])
return iter([data])
Vamos a analizar este fragmento de código con más detalle:
- Primero, toda la información relacionada con la solicitud se encuentra en el argumento
environ. - Luego, la función
start_responsese encarga de establecer los parámetros de la respuesta, como el tamaño y el tipo de contenido. - Finalmente, la función devuelve un iterador que genera la respuesta línea por línea.
Es bastante sencillo obtener una aplicación web funcional de la forma más básica:
- Tomamos el popular servidor WSGI gunicorn.
- Guardamos la función en el archivo
example.py. - Ejecutamos el comando
gunicorn -w 4 example:app. - Seguimos el enlace en la salida de gunicorn y vemos la respuesta del servidor.
Marco web
Hasta ahora hemos visto una aplicación web bastante simple. Aunque funciona, para cualquier solicitud, solo devolverá el mismo texto. Será problemático, aunque factible, escribir algo más complicado de esta manera.
Para facilitar la vida del desarrollador de backend y ayudarlo a implementar aplicaciones típicas, se utilizan frameworks (entornos de trabajo) 📚, que bibliotecas que proporcionan una estructura de aplicación predefinida.
El desarrollador solo necesita insertar sus fragmentos de código en esta estructura, mientras que el esqueleto de la aplicación ya está listo para ser utilizado.
Los frameworks web más populares para Python son Django y Flask.
Los frameworks web se encargan de muchas tareas diferentes:
- Realizan routing.
- Simplifican el trabajo con encabezados y datos de solicitudes.
- Generan respuestas en diferentes formatos.
- Guardan historias de solicitudes en archivos para recopilación de estadísticas y depuración.
ORM y motor de plantillas
¿Qué más hay en el backend además del manejo de solicitudes? Lo más común es que haya un ORM y un motor de plantillas.
El mapeo relacional de objetos (object-relational mapping) u ORM es una herramienta para trabajar con registros en bases de datos, presentando los registros como objetos comprensibles para el lenguaje de programación.
Un motor de plantillas es una herramienta que permite escribir HTML y CSS en archivos separados, y luego modificar su contenido desde el código para que el maquetado muestre los datos necesarios. El motor de plantillas permite maquetar un diseño una vez, y luego obtener diferentes páginas del diseño de forma programática.
Django e incluso algunos otros marcos web ya incluyen un ORM y un motor de plantillas.
Materiales adicionales
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.