Cómo crear una API de generación de datos de personas aleatorias con Flask

Introducción:

¡Bienvenido a una emocionante aventura en el mundo del desarrollo web con Python! En este tutorial, te llevaré de la mano a través de la creación de una API altamente versátil utilizando Flask, una de las bibliotecas más queridas de Python para el desarrollo web. Pero esto no es solo una API común, ¡es una herramienta que te permitirá generar datos de personas aleatorias con una riqueza de detalles asombrosa!

Imagina tener acceso instantáneo a nombres, direcciones, correos electrónicos y mucho más, ¡todo generado automáticamente! Esto no solo es emocionante, sino que también es increíblemente útil para desarrolladores y profesionales de diversos campos. ¿Necesitas datos de prueba para tu aplicación? ¡Los tienes! ¿Quieres probar la robustez de tu software? ¡Esta API es tu aliada! ¿Quieres crear prototipos rápidos o realizar análisis con datos simulados? ¡Esta herramienta lo hace posible!

Así que prepárate para un viaje fascinante mientras exploramos cada detalle, desde la instalación de las dependencias hasta la creación y ejecución de esta API increíble. En poco tiempo, estarás generando datos realistas con solo unos pocos clics y líneas de código. ¡Vamos a sumergirnos en este emocionante mundo de desarrollo y análisis de datos con Flask! ¡Comencemos!

 No olvides suscribirte a nuestro blog y canal de YouTube para estar al tanto de nuestro contenido y déjanos tus comentarios sobre qué te ha parecido este tema apasionante. ¡Comencemos!

💚Inspiracion para el modelo:

Para nuestro proyecto en desarrollo, hemos tomado como fuente de inspiración el servicio «RANDOM USER GENERATOR» disponible en la URL https://randomuser.me/.

«RANDOM USER GENERATOR» es una herramienta que nos proporciona datos ficticios de personas de manera aleatoria, lo que resulta extremadamente útil para pruebas, demostraciones y desarrollo de aplicaciones donde se requieren datos de ejemplo. Nos ha servido como un punto de partida sólido para la creación de nuestro propio generador de datos aleatorios. Evidentemente es practicamente un Clon, pero que nos sirve para tener una idea general de como aplicar estos conocimientos en proyecto futuros.

En nuestro proyecto, como hemos mencionado anteriormete en la introduccion, un desarrollo de una aplicación web utilizando el framework Flask de Python. Esta aplicación genera datos ficticios de personas de manera similar a «RANDOM USER GENERATOR», pero con la flexibilidad de adaptar los datos a nuestras necesidades específicas.

En dondo encontre estos datos?. Bueno! especificamente de un Video de nuestro querido Profesor Danny Blanco en su canal de Youtube. Puedes ver su perfil en Linkedin. Aqui te dejo este excelente video, donde usa la API original en su proyecto en Power Bi, para crear una Tabla de Vendedores, con sus datos, imagenes, etc. 

📝Conceptos Fundamentales de las 3 Tecnologías a Usar:

Python: El Lenguaje de Programación Dinámico y Versátil

Python es un lenguaje de programación ampliamente utilizado que se destaca por su simplicidad, legibilidad y versatilidad. Es conocido por su sintaxis clara y su facilidad de aprendizaje, lo que lo convierte en una elección popular tanto para principiantes como para desarrolladores experimentados. Python se utiliza en una amplia variedad de aplicaciones, desde desarrollo web hasta análisis de datos, inteligencia artificial y automatización de tareas. En este contexto, Python es el lenguaje de elección para desarrolladores que desean crear aplicaciones web potentes y eficientes.

Dependencias Clave para tu Proyecto en Python: Flask y Watchdog

Para llevar a cabo tu proyecto en Python de manera efectiva, es esencial contar con las dependencias adecuadas que proporcionan funcionalidades específicas. Aquí, destacaremos dos dependencias clave que pueden ser vitales para diferentes aspectos de tu proyecto:

  1. Flask (Versión 2.3.3): Flask es un framework de desarrollo web en Python que permite crear aplicaciones web de manera rápida y sencilla. La versión específica «2.3.3» de Flask puede tener mejoras y características específicas que son necesarias para tu proyecto. Flask proporciona herramientas y componentes esenciales para gestionar solicitudes HTTP, crear rutas de URL, gestionar sesiones y más. Es especialmente valioso cuando necesitas construir una API web como parte de tu proyecto.

  2. Watchdog (Versión 2.1.3): Watchdog es una biblioteca de Python diseñada para monitorear cambios en el sistema de archivos. Su versatilidad lo hace útil en una variedad de escenarios, desde rastrear modificaciones en archivos hasta realizar acciones específicas cuando se detectan cambios en directorios. Esta biblioteca es especialmente útil si tu proyecto requiere la supervisión continua de archivos o directorios, lo que puede ser relevante para tareas como la actualización automática de recursos o el monitoreo de cambios en archivos de configuración.

📰Otros Conceptos que debes conocer

    1. Flask: Flask es un framework de Python utilizado para construir aplicaciones web. Permite crear aplicaciones web de manera rápida y sencilla mediante el enrutamiento de URL y la gestión de solicitudes y respuestas HTTP. La importación de la clase Flask es necesaria para crear la aplicación web que servirá como base para la API.

    2. jsonify: jsonify es una función proporcionada por Flask que se utiliza para convertir objetos Python en formato JSON. En el contexto de esta aplicación, se utiliza para formatear los datos generados como respuestas JSON que pueden ser enviadas como respuesta a las solicitudes de la API.

    3. random: El módulo random es una parte estándar de la biblioteca Python. Proporciona funciones para la generación de números aleatorios. En este código, se utiliza para tomar decisiones aleatorias, como la elección del género de la persona o la selección de una imagen aleatoria.

    4. faker: Faker es una librería Python que permite generar datos ficticios realistas. Facilita la creación de datos de prueba o ejemplos que se asemejan a datos del mundo real. En este caso, Faker se utiliza para generar nombres, direcciones, correos electrónicos y otros detalles de personas ficticias.

    5. pytz: Pytz es una librería Python que proporciona funcionalidades relacionadas con zonas horarias. En el código, se utiliza para obtener una lista de todas las zonas horarias disponibles (timezones) y para calcular el desplazamiento horario en horas de una zona horaria específica. Esto se utiliza para generar datos de zona horaria para las personas ficticias.

    Estas importaciones son esenciales para el funcionamiento de la aplicación Flask y para la generación de datos aleatorios y realistas que la API proporciona como respuesta.

Para ejecutar la aplicación, usa el siguiente comando: En la Consola Escribimos python app.py

👨🏿‍💻Utilizamos el Editor de Codigo Visual Studio Code

Instalar Visual Studio Code (VSC) es un proceso sencillo. A continuación, te proporciono los pasos para instalarlo en diferentes sistemas operativos:

Para Windows:

  1. Ve al sitio web oficial de Visual Studio Code en : https://code.visualstudio.com/.
  2. Haz clic en el botón «Descargar para Windows» para descargar el instalador.
  3. Una vez descargado, ejecuta el instalador.
  4. Acepta los términos del acuerdo de licencia.
  5. Elige las opciones de instalación deseadas (por lo general, las opciones predeterminadas son adecuadas).
  6. Haz clic en «Siguiente» y luego en «Instalar».
  7. Espera a que se complete la instalación.
  8. Una vez instalado, puedes abrir Visual Studio Code desde el menú de inicio.

Para macOS:

  1. Ve al sitio web oficial de Visual Studio Code en: https://code.visualstudio.com/.
  2. Haz clic en el botón «Descargar para Mac» para obtener el archivo DMG de instalación.
  3. Abre el archivo DMG descargado.
  4. Arrastra el icono de Visual Studio Code a la carpeta de «Aplicaciones» para instalarlo.
  5. Una vez instalado, puedes abrir Visual Studio Code desde Launchpad o desde la carpeta de «Aplicaciones».

Para Linux (Ubuntu/Debian):

  1. Ve al sitio web oficial de Visual Studio Code en: https://code.visualstudio.com/.
  2. Haz clic en el botón «Descargar para Linux» para obtener el archivo .deb de instalación.
  3. Abre una terminal y navega a la ubicación donde se descargó el archivo .deb.
  4. Ejecuta el siguiente comando para instalarlo (reemplaza nombre_del_archivo.deb con el nombre real del archivo descargado)

✅Paso 1: Preparación del Entorno

Para instalar Python en Windows y Visual Studio Code (VSC), sigue estos pasos:

1. Instalar Python en Windows:

  1. Ve al sitio web oficial de Python en https://www.python.org/downloads/.
  2. En la sección «Descargar para Windows», haz clic en el enlace «Download Python x.x.x» (x.x.x representa la versión más reciente disponible).
  3. Selecciona el instalador adecuado para tu sistema (32 o 64 bits).
  4. Descarga el instalador ejecutable de Python para Windows.
  5. Ejecuta el instalador y marca la casilla «Add Python x.x to PATH» para incluir Python en la variable de entorno PATH.
  6. Haz clic en «Install Now» y sigue las instrucciones del instalador para completar la instalación.
  7. Después de la instalación, abre una nueva ventana de terminal (símbolo del sistema) y escribe python --version para verificar que Python se instaló correctamente.

2. Instalar Visual Studio Code en Windows:

  1. Ve al sitio web oficial de Visual Studio Code en https://code.visualstudio.com/.
  2. Haz clic en el botón «Download for Windows» para descargar el instalador de VSC.
  3. Ejecuta el instalador descargado.
  4. Selecciona las opciones de instalación deseadas y sigue las instrucciones del instalador.
  5. Una vez completada la instalación, abre Visual Studio Code desde el menú de inicio o usando el icono en el escritorio.

3. Configurar Visual Studio Code para Python:

  1. Abre Visual Studio Code.
  2. Instala la extensión de Python. Para hacerlo, haz clic en el ícono de «Extensions» (cuatro cuadrados) en la barra lateral izquierda, busca «Python» y haz clic en «Install».
  3. Reinicia Visual Studio Code para que los cambios surtan efecto.
  4. Verifica que la extensión de Python esté activa. Debería ver un ícono verde en la barra de estado de la parte inferior derecha de VSC, que indica que la extensión está activa.
  5. Ahora puedes abrir un archivo de Python o crear uno nuevo, y Visual Studio Code estará listo para trabajar con proyectos de Python.

Una vez que hayas seguido estos pasos, tanto Python como Visual Studio Code estarán instalados y configurados en tu sistema de Windows. Ahora podrás comenzar a escribir y ejecutar código Python en VSC. Recuerda que es posible que necesites reiniciar tu computadora después de instalar Python y VSC para asegurarte de que todas las configuraciones se apliquen correctamente.

🌎Visitar el sitio web oficial de python

📚Podemos descargarlo e intarlo desde VSC

⚙Crea un entorno virtual para este proyecto y actívalo. Abre una terminal y ejecuta los siguientes comandos:


# Crear un entorno virtual
python -m venv random_persons_api

# Activar el entorno virtual (en Windows)
random_persons_api\Scripts\activate

# Activar el entorno virtual (en macOS/Linux)
source random_persons_api/bin/activate

✅Paso 2: Instalación de Flask y Dependencias


pip install Flask faker pytz

Para instalar Watchdog 2.1.3, ejecuta el siguiente comando:

Esto descargará e instalará Watchdog en tu sistema con la versión exacta 2.1.3.

Después de ejecutar estos comandos, Flask y Watchdog deberían estar instalados en tu sistema con las versiones específicas que especificaste.

Ten en cuenta que si estás trabajando en un entorno virtual (lo cual se recomienda para proyectos de Python para evitar conflictos entre dependencias), debes activar primero tu entorno virtual antes de ejecutar estos comandos. Esto te lo explique mas arriba como hacerlo.

✅Paso 3: Creación del Archivo de la Aplicación (Código Completo)

Crea un archivo llamado app.py en el directorio del proyecto y copia el código proporcionado en este blog en tu archivo.


from flask import Flask, jsonify
import random
import faker
import pytz

app = Flask(__name__)

# Crear un generador de datos aleatorios
fake = faker.Faker()

# Lista de zonas horarias
timezones = pytz.all_timezones

# Función para generar un objeto de persona aleatoria con imágenes
def generate_random_person():
    gender = random.choice(["male", "female"])
    first_name = fake.first_name()
    last_name = fake.last_name()
    street_number = fake.building_number()
    street_name = fake.street_name()
    city = fake.city()
    state = fake.state()
    country = fake.country()
    postcode = fake.zipcode()
    latitude = fake.latitude()
    longitude = fake.longitude()
    
    # Generar una zona horaria aleatoria
    timezone = random.choice(timezones)

    # Manejar el caso en el que no se puede obtener un desplazamiento válido
    try:
        utcoffset = pytz.timezone(timezone).utcoffset(None)
        offset_hours = utcoffset.total_seconds() / 3600.0
    except Exception as e:
        # Si hay un error, establece el desplazamiento en None
        utcoffset = None
        offset_hours = None

    email = fake.email()
    username = fake.user_name()
    password = fake.password()
    salt = fake.sha256()
    md5 = fake.md5()
    sha1 = fake.sha1()
    sha256 = fake.sha256()
    dob_date = fake.date_of_birth(minimum_age=18, maximum_age=80)
    dob_age = fake.random_int(min=18, max=80)
    registered_date = fake.date_this_century(before_today=True, after_today=False)
    registered_age = fake.random_int(min=1, max=10)
    phone = fake.phone_number()
    cell = fake.phone_number()
    nat = fake.country_code(representation="alpha-2")

    # Generar URLs de imágenes aleatorias
    picture_large = f"https://randomuser.me/api/portraits/men/{random.randint(1, 99)}.jpg"
    picture_medium = f"https://randomuser.me/api/portraits/med/men/{random.randint(1, 99)}.jpg"
    picture_thumbnail = f"https://randomuser.me/api/portraits/thumb/men/{random.randint(1, 99)}.jpg"

    person = {
        "gender": gender,
        "name": {
            "title": fake.prefix(),
            "first": first_name,
            "last": last_name
        },
        "location": {
            "street": {
                "number": street_number,
                "name": street_name
            },
            "city": city,
            "state": state,
            "country": country,
            "postcode": postcode,
            "coordinates": {
                "latitude": latitude,
                "longitude": longitude
            },
            "timezone": {
                "offset": offset_hours,
                "description": timezone
            }
        },
        "email": email,
        "login": {
            "uuid": fake.uuid4(),
            "username": username,
            "password": password,
            "salt": salt,
            "md5": md5,
            "sha1": sha1,
            "sha256": sha256
        },
        "dob": {
            "date": dob_date.isoformat(),
            "age": dob_age
        },
        "registered": {
            "date": registered_date.isoformat(),
            "age": registered_age
        },
        "phone": phone,
        "cell": cell,
        "id": {
            "name": fake.random_element(elements=["CPR", "NINO", "HETU", "TFN", "SVNR", "SIN", "FN"]),
            "value": fake.random_element(elements=[fake.random_number(digits=10), None])
        },
        "picture": {
            "large": picture_large,
            "medium": picture_medium,
            "thumbnail": picture_thumbnail
        },
        "nat": nat
    }

    return person

# Ruta para obtener datos aleatorios de personas
@app.route('/api/random_persons', methods=['GET'])
def get_random_persons():
    results = [generate_random_person() for _ in range(50)]
    response = {
        "results": results,
        "info": {
            "seed": fake.random_int(min=1000, max=9999),
            "results": 50,
            "page": 1,
            "version": "1.4"
        }
    }
    return jsonify(response)



if __name__ == '__main__':
    app.run(debug=True)


📝Explicando el Codigo por partes:


from flask import Flask, jsonify
import random
import faker
import pytz

app = Flask(__name__)

# Crear un generador de datos aleatorios
fake = faker.Faker()

# Lista de zonas horarias
timezones = pytz.all_timezones

# Función para generar un objeto de persona aleatoria con imágenes
def generate_random_person():
    gender = random.choice(["male", "female"])
    first_name = fake.first_name()
    last_name = fake.last_name()
    street_number = fake.building_number()
    street_name = fake.street_name()
    city = fake.city()
    state = fake.state()
    country = fake.country()
    postcode = fake.zipcode()
    latitude = fake.latitude()
    longitude = fake.longitude()

En este fragmento de código se están importando algunas bibliotecas y creando un objeto Flask para construir una aplicación web.

Vamos a desglosar el código paso a paso:

  1. from flask import Flask, jsonify: Importa las clases Flask y jsonify del módulo Flask. Flask se utiliza para crear y configurar la aplicación web, mientras que jsonify se usa para generar respuestas JSON.

  2. import random: Importa el módulo random, que se utiliza para generar valores aleatorios.

  3. import faker: Importa la biblioteca faker, que se utiliza para generar datos falsos, como nombres, direcciones, etc.

  4. import pytz: Importa la biblioteca pytz, que proporciona información sobre las zonas horarias.

  5. app = Flask(__name__): Crea una instancia de la clase Flask llamada app. Esta instancia representa tu aplicación web Flask. __name__ es una variable especial de Python que se establece en el nombre del módulo actual. Flask la utiliza para determinar la ubicación de las plantillas y archivos estáticos, entre otras cosas.

  6. fake = faker.Faker(): Crea una instancia de la clase Faker de la biblioteca faker. Esta instancia se utilizará para generar datos falsos más adelante en el código.

  7. timezones = pytz.all_timezones: Crea una lista llamada timezones que contiene todas las zonas horarias disponibles. Esto se utilizará en la aplicación para generar datos relacionados con la zona horaria.

  8. generate_random_person(): Define una función llamada generate_random_person(). Esta función generará datos aleatorios de una persona, como género, nombre, dirección, etc. Sin embargo, en el fragmento de código proporcionado, la función no está implementada completamente y falta su contenido.

📝Explicacion Paso a Paso


 
    # Generar una zona horaria aleatoria
    timezone = random.choice(timezones)

    # Manejar el caso en el que no se puede obtener un desplazamiento válido
    try:
        utcoffset = pytz.timezone(timezone).utcoffset(None)
        offset_hours = utcoffset.total_seconds() / 3600.0
    except Exception as e:
        # Si hay un error, establece el desplazamiento en None
        utcoffset = None
        offset_hours = None

    email = fake.email()
    username = fake.user_name()
    password = fake.password()
    salt = fake.sha256()
    md5 = fake.md5()
    sha1 = fake.sha1()
    sha256 = fake.sha256()
    dob_date = fake.date_of_birth(minimum_age=18, maximum_age=80)
    dob_age = fake.random_int(min=18, max=80)
    registered_date = fake.date_this_century(before_today=True, after_today=False)
    registered_age = fake.random_int(min=1, max=10)
    phone = fake.phone_number()
    cell = fake.phone_number()
    nat = fake.country_code(representation="alpha-2")

📝Explicacion Paso a Paso:

Aqui en este fragmento de código, podemos ver la continuación de la función generate_random_person() que se mencionó anteriormente. Aquí se están generando datos aleatorios relacionados con una persona, incluyendo la zona horaria.

Vamos a desglosar este código paso a paso:

  1. timezone = random.choice(timezones): Se elige una zona horaria aleatoria de la lista de timezones que se definió anteriormente. Esto simula la selección de una zona horaria para la persona.

  2. El bloque try y except maneja la conversión de la zona horaria en un desplazamiento UTC (Coordinated Universal Time) en horas. Si se puede obtener un desplazamiento válido, se almacena en la variable offset_hours. Si hay un error (por ejemplo, si la zona horaria no es válida), se captura en el bloque except, y tanto utcoffset como offset_hours se establecen en None.

  3. Las siguientes líneas generan datos falsos relacionados con la persona, como su dirección de correo electrónico, nombre de usuario, contraseña, sal, sumas de verificación MD5, SHA-1 y SHA-256, fecha de nacimiento, edad, fecha de registro, número de teléfono, número de celular y código de país de nacionalidad.

  4. Algunos ejemplos de lo que se genera:

    • email: Una dirección de correo electrónico falsa.
    • username: Un nombre de usuario falso.
    • password: Una contraseña falsa.
    • salt: Una cadena falsa utilizada en criptografía.
    • md5, sha1, sha256: Sumas de verificación falsas en diferentes algoritmos.
    • dob_date: Una fecha de nacimiento falsa dentro de un rango de edad.
    • dob_age: Una edad falsa dentro de un rango.
    • registered_date: Una fecha de registro falsa.
    • registered_age: Una edad de registro falsa.
    • phone y cell: Números de teléfono falsos.
    • nat: Código de país de nacionalidad en formato alpha-2.

🌎Generando URLs de imágenes aleatorias que corresponden a retratos de hombres


    # Generar URLs de imágenes aleatorias
    picture_large = f"https://randomuser.me/api/portraits/men/{random.randint(1, 99)}.jpg"
    picture_medium = f"https://randomuser.me/api/portraits/med/men/{random.randint(1, 99)}.jpg"
    picture_thumbnail = f"https://randomuser.me/api/portraits/thumb/men/{random.randint(1, 99)}.jpg"

En este fragmento de código, se están generando URLs de imágenes aleatorias que corresponden a retratos de hombres. Estas URLs utilizan una plantilla común y un número aleatorio para seleccionar una imagen específica de una fuente de imágenes aleatorias.

Aquí tienes una explicación de cómo funciona este código:

  1. picture_large, picture_medium y picture_thumbnail son variables que almacenan las URLs de las imágenes en diferentes tamaños.

  2. Cada URL tiene una parte fija que apunta a un servicio de imágenes aleatorias (https://randomuser.me/api/portraits/). Este servicio proporciona retratos aleatorios de personas.

  3. En la parte variable de la URL, se especifica el género («men» en este caso) y se utiliza random.randint(1, 99) para generar un número aleatorio entre 1 y 99. Este número aleatorio se utiliza para seleccionar una imagen específica entre las disponibles en ese rango.

  4. La URL completa se construye concatenando la parte fija con el número aleatorio generado, y se almacena en las variables picture_large, picture_medium y picture_thumbnail.

📑Creando un diccionario en Python llamado person

person = {
        "gender": gender,
        "name": {
            "title": fake.prefix(),
            "first": first_name,
            "last": last_name
        },
        "location": {
            "street": {
                "number": street_number,
                "name": street_name
            },
            "city": city,
            "state": state,
            "country": country,
            "postcode": postcode,
            "coordinates": {
                "latitude": latitude,
                "longitude": longitude
            },
            "timezone": {
                "offset": offset_hours,
                "description": timezone
            }
        },
        "email": email,
        "login": {
            "uuid": fake.uuid4(),
            "username": username,
            "password": password,
            "salt": salt,
            "md5": md5,
            "sha1": sha1,
            "sha256": sha256
        },
        "dob": {
            "date": dob_date.isoformat(),
            "age": dob_age
        },
        "registered": {
            "date": registered_date.isoformat(),
            "age": registered_age
        },
        "phone": phone,
        "cell": cell,
        "id": {
            "name": fake.random_element(elements=["CPR", "NINO", "HETU", "TFN", "SVNR", "SIN", "FN"]),
            "value": fake.random_element(elements=[fake.random_number(digits=10), None])
        },
        "picture": {
            "large": picture_large,
            "medium": picture_medium,
            "thumbnail": picture_thumbnail
        },
        "nat": nat
    }

    return person

Este fragmento de código crea un diccionario en Python llamado person que contiene información generada aleatoriamente sobre una persona. El diccionario está estructurado de manera jerárquica con claves anidadas para representar diferentes aspectos de la información de la persona.

Aquí está una explicación de cómo se construye el diccionario person:

  1. "gender", "name", "location", "email", "login", "dob", "registered", "phone", "cell", "id", "picture", y "nat" son claves principales del diccionario person que representan diferentes categorías de información sobre la persona.

  2. Dentro de cada categoría, se utilizan claves secundarias para almacenar información específica. Por ejemplo:

    • "name" almacena el título, el primer nombre y el apellido de la persona.
    • "location" contiene detalles sobre la dirección, incluyendo la calle, la ciudad, el estado, el país, el código postal y las coordenadas de latitud y longitud.
    • "email" almacena la dirección de correo electrónico de la persona.
    • "login" almacena información sobre el nombre de usuario, contraseña y otros datos de inicio de sesión.
    • "dob" y "registered" almacenan fechas de nacimiento y fechas de registro, respectivamente, junto con las edades correspondientes.
    • "phone" y "cell" almacenan números de teléfono.
    • "id" almacena un nombre de identificación y un valor asociado, que pueden ser diferentes identificadores (por ejemplo, números de identificación).
    • "picture" almacena URLs de imágenes en diferentes tamaños (grande, mediano y miniatura) de la persona.
    • "nat" almacena el código de país de nacionalidad de la persona.
  3. La mayoría de los valores asociados con estas claves son generados aleatoriamente utilizando la biblioteca faker y otras bibliotecas. Por ejemplo, nombres, direcciones de correo electrónico, números de teléfono, fechas de nacimiento y más.

  4. Finalmente, el diccionario person se devuelve como resultado de la función, lo que significa que puede ser utilizado en otros lugares de la aplicación como datos simulados de una persona.

👨🏿‍💻Obtener datos aleatorios de personas y luego inicia la aplicación web


# Ruta para obtener datos aleatorios de personas
@app.route('/api/random_persons', methods=['GET'])
def get_random_persons():
    results = [generate_random_person() for _ in range(50)]
    response = {
        "results": results,
        "info": {
            "seed": fake.random_int(min=1000, max=9999),
            "results": 50,
            "page": 1,
            "version": "1.4"
        }
    }
    return jsonify(response)



if __name__ == '__main__':
    app.run(debug=True)


Este fragmento de código de Flask define una ruta (/api/random_persons) para obtener datos aleatorios de personas y luego inicia la aplicación web si se ejecuta como un script independiente. Aquí está una explicación detallada:

  1. @app.route('/api/random_persons', methods=['GET']): Esta es una decoración de ruta en Flask. Define una ruta en la aplicación web que responderá a las solicitudes GET en la URL /api/random_persons. En otras palabras, cuando alguien acceda a esta URL a través de un navegador o una solicitud HTTP GET, la función get_random_persons() se ejecutará para manejar la solicitud.

  2. def get_random_persons(): Esta es la función que maneja las solicitudes a la ruta /api/random_persons. Dentro de esta función, se generan datos aleatorios de personas llamando a la función generate_random_person() que previamente fue definida en el código. En este caso, se generan 50 resultados aleatorios y se almacenan en la lista results.

  3. Luego, se crea un diccionario response que contiene dos claves:

    • "results": Esta clave almacena la lista de resultados generados aleatoriamente (results).
    • "info": Esta clave almacena información adicional sobre la respuesta, como la semilla aleatoria, la cantidad de resultados, la página y la versión.
  4. return jsonify(response): La función jsonify convierte el diccionario response en una respuesta JSON y la devuelve al cliente que realizó la solicitud. Esto significa que cuando alguien acceda a la ruta /api/random_persons, recibirá una respuesta JSON con los datos aleatorios generados.

  5. El bloque if __name__ == '__main__': verifica si el script se está ejecutando directamente como un programa principal (en lugar de ser importado como un módulo). Si se está ejecutando como un programa principal (normalmente al ejecutar el script desde la línea de comandos), entonces app.run(debug=True) inicia la aplicación web en modo de depuración (debug=True), lo que permite ver los errores detallados en el navegador en caso de problemas y hace que la aplicación escuche las solicitudes entrantes.

🎨Estructura de nuestro proyecto en Visual Studio Code

Al terminar de crear nuestro codigo, nos quedaria de esta forma en VSC, hemos agregado 3 archivos mas, para luego subirlo a algun portal y poder compartirla publicamente, estos archivos son :

requirements.txt # Lista de dependencias del proyecto.

nuntime.txt= que tiene dentro la version de python, puede ser Python-3.9, o 3.10.5, 3.11.1, eso dependera de la plataforma donde se valla a subir .

En mi caso, pieso subirla a vercel, mas adelante, con lo cual tambien he creado este archivo:

{
 «functions»: {
 «nombre_de_tu_funcion  «: {
 «runtime»: «python3.9»
  }
 }
}
El cual tiene la funcion runtime.

  • "functions": Esta sección define las funciones que quieres desplegar en Vercel. En el caso de Vercel, las funciones se utilizan para ejecutar código del lado del servidor en respuesta a solicitudes HTTP u otros eventos.

  • "nombre_de_tu_funcion": Aquí debes reemplazar "nombre_de_tu_funcion" con el nombre real de la función que deseas configurar. Esto será el nombre de la función en Vercel.

  • "runtime": Especifica la versión de Python que se utilizará para ejecutar esta función. En este caso, has configurado "python3.9" como el entorno de ejecución. Esto significa que Vercel utilizará Python 3.9 para ejecutar tu función.

Cuando despliegues tu proyecto en Vercel y configuren correctamente el archivo vercel.json, Vercel sabrá cómo ejecutar tus funciones del lado del servidor en función de esta configuración.

Cuando escribimos el comando, veremos como comienza el servicio de flask a correr, una vez termina nos indica la URL local y el puerto en donde estara ejecutandose nuestro proyecto, ahora acceder a API y su resultado escribismos el nombre del directorio, el cual es : http://127.0.0.1:5000/api/random_persons

Aqui como vemos se despliega la API con los datos generados, donde tendremos como habiamos mencionado :

  1. gender: El género de la persona (puede ser «male» o «female»).
  2. name: Un objeto que contiene el título, el primer nombre y el apellido de la persona.
    • title: El título de la persona (por ejemplo, «Sr.» o «Sra.»).
    • first: El primer nombre de la persona.
    • last: El apellido de la persona.
  3. location: Un objeto que contiene información sobre la dirección de la persona.
    • street: Un objeto que contiene el número de calle y el nombre de la calle.
      • number: El número de la calle.
      • name: El nombre de la calle.
    • city: La ciudad de la persona.
    • state: El estado de la persona.
    • country: El país de la persona.
    • postcode: El código postal de la persona.
    • coordinates: Un objeto que contiene la latitud y la longitud de la ubicación.
      • latitude: La latitud de la ubicación.
      • longitude: La longitud de la ubicación.
    • timezone: Un objeto que contiene el desplazamiento horario y la descripción de la zona horaria.
      • offset: El desplazamiento horario en horas.
      • description: La descripción de la zona horaria.
  4. email: La dirección de correo electrónico de la persona.
  5. login: Un objeto que contiene información de inicio de sesión, como UUID, nombre de usuario y contraseñas cifradas.
  6. dob: Un objeto que contiene la fecha de nacimiento y la edad de la persona.
    • date: La fecha de nacimiento en formato ISO.
    • age: La edad de la persona.
  7. registered: Un objeto que contiene la fecha de registro y la antigüedad de registro de la persona.
    • date: La fecha de registro en formato ISO.
    • age: La antigüedad de registro en años.
  8. phone: El número de teléfono de la persona.
  9. cell: El número de teléfono celular de la persona.
  10. id: Un objeto que contiene un nombre de identificación y un valor de identificación.
    • name: El nombre de identificación (por ejemplo, «CPR» o «NINO»).
    • value: El valor de identificación, que puede ser un número aleatorio de 10 dígitos o nulo (None).
  11. picture: Un objeto que contiene URLs de imágenes de la persona en diferentes tamaños (grande, mediano y miniatura).
    • large: URL de la imagen grande.
    • medium: URL de la imagen mediana.
    • thumbnail: URL de la imagen en miniatura.
  12. nat: El código de país de la persona en formato alfa-2.

Estos campos contienen datos aleatorios y ficticios generados por la librería Faker y se devuelven como parte de la respuesta JSON cuando se accede a la ruta /api/random_persons.

🥉Cierre:

¡Felicidades! Has creado una API de generación de datos de personas aleatorias con Flask. Puedes ejecutar esta aplicación y acceder a los datos de personas aleatorias en la ruta /api/random_persons. Esta API es útil para generar datos de prueba o de ejemplo en tus proyectos de desarrollo. Recuerda que esta API se debe utilizar con responsabilidad y no para recopilar información real de personas.

Has desarrollado una API de generación de datos de personas aleatorias con Flask, y esta herramienta puede ser muy valiosa en varios aspectos:

1. Desarrollo y Pruebas de Aplicaciones: Esta API es ideal para el desarrollo y pruebas de aplicaciones que requieren datos de usuario realistas pero no desean utilizar información personal de usuarios reales. Puedes usar esta API para llenar tu base de datos con datos de prueba y probar cómo funciona tu aplicación con una gran cantidad de datos ficticios.

2. Prototipado Rápido: Cuando necesitas crear prototipos rápidos de una aplicación o demostrar conceptos a colegas o inversores, esta API puede generar fácilmente datos ficticios que se parecen a los datos del mundo real, lo que facilita la creación de prototipos convincentes.

3. Generación de Contenido de Prueba: Los desarrolladores web y diseñadores pueden utilizar esta API para llenar sitios web o aplicaciones con contenido de prueba, incluyendo nombres, imágenes, direcciones, etc. Esto es útil al diseñar interfaces de usuario o páginas web que necesitan contenido de ejemplo.

4. Educación y Aprendizaje: Esta API puede ser un recurso educativo valioso para aprender a trabajar con Flask, cómo construir rutas API y cómo generar datos ficticios. Los estudiantes y desarrolladores principiantes pueden estudiar el código y practicar con él.

5. Presentaciones y Tutoriales: Puedes utilizar esta API como parte de presentaciones o tutoriales para mostrar cómo crear una API simple con Flask y cómo generar datos ficticios para propósitos de desarrollo.

6. Pruebas de Estrés: Si necesitas someter tu aplicación a pruebas de estrés, puedes usar esta API para generar un gran volumen de solicitudes ficticias a tu servidor y evaluar cómo se comporta bajo carga.

7. Preservación de la Privacidad: Al utilizar datos ficticios, evitas la necesidad de manejar datos personales sensibles, lo que ayuda a mantener la privacidad y la seguridad de los usuarios en tus pruebas y desarrollo.

8. Experimentación: Los científicos de datos y analistas pueden utilizar esta API para obtener datos aleatorios para experimentos y análisis, lo que puede ser útil en investigación y análisis de datos.

9. Generación de Documentación: Puedes usar los datos generados por la API para crear documentación o ejemplos para tu aplicación.

10. Benchmarking: Comparar el rendimiento de diferentes tecnologías o componentes de tu infraestructura utilizando datos aleatorios puede ayudarte a tomar decisiones más informadas en tu proyecto.

Te invitamos a que dejes tus comentarios, te suscribas a nuestro blog y a nuestro canal de YouTube. De esta manera, podrás estar al tanto de todo el contenido que publiquemos y tendrás acceso a videos, tutoriales y recursos útiles para ayudarte a avanzar en tu carrera. ¡No te pierdas la oportunidad de formar parte de esta emocionante y cambiante disciplina!

Comparte este Contenido en tus Redes Sociales

Deja un comentario