En este tema, aprenderemos cómo manejar datos JSON en Flask, lo cual es esencial para la creación de APIs RESTful. JSON (JavaScript Object Notation) es un formato de intercambio de datos ligero y fácil de leer y escribir tanto para humanos como para máquinas. Flask proporciona herramientas integradas para trabajar con JSON de manera eficiente.

Contenido

Introducción a JSON

JSON es un formato de texto que sigue una estructura de pares clave-valor. Aquí hay un ejemplo de un objeto JSON:

{
    "name": "John Doe",
    "age": 30,
    "email": "[email protected]",
    "is_active": true
}

Serialización y Deserialización de JSON

En Flask, la serialización se refiere a convertir un objeto Python en una cadena JSON, mientras que la deserialización es el proceso inverso.

Serialización

Para convertir un objeto Python en JSON, podemos usar la función jsonify de Flask:

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/user')
def get_user():
    user = {
        "name": "John Doe",
        "age": 30,
        "email": "[email protected]",
        "is_active": True
    }
    return jsonify(user)

Deserialización

Para convertir una cadena JSON en un objeto Python, podemos usar la función json.loads del módulo json de Python:

import json

json_data = '{"name": "John Doe", "age": 30, "email": "[email protected]", "is_active": true}'
user = json.loads(json_data)
print(user)

Enviando Respuestas JSON

Flask facilita el envío de respuestas JSON utilizando la función jsonify. Aquí hay un ejemplo:

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api/user')
def api_user():
    user = {
        "name": "Jane Doe",
        "age": 25,
        "email": "[email protected]",
        "is_active": True
    }
    return jsonify(user)

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

En este ejemplo, cuando accedemos a la ruta /api/user, Flask devuelve una respuesta JSON con los datos del usuario.

Recibiendo y Procesando Datos JSON

Para recibir datos JSON en una solicitud, Flask proporciona el atributo request.json. Aquí hay un ejemplo de cómo manejar una solicitud POST con datos JSON:

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/api/user', methods=['POST'])
def create_user():
    data = request.json
    name = data.get('name')
    age = data.get('age')
    email = data.get('email')
    is_active = data.get('is_active')

    # Procesar los datos recibidos
    new_user = {
        "name": name,
        "age": age,
        "email": email,
        "is_active": is_active
    }

    return jsonify(new_user), 201

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

En este ejemplo, la ruta /api/user acepta solicitudes POST con datos JSON. Los datos se extraen del objeto request.json y se procesan según sea necesario.

Ejercicios Prácticos

Ejercicio 1: Crear un Endpoint que Devuelva una Lista de Usuarios

Crea un endpoint /api/users que devuelva una lista de usuarios en formato JSON.

Solución:

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api/users')
def get_users():
    users = [
        {"name": "John Doe", "age": 30, "email": "[email protected]", "is_active": True},
        {"name": "Jane Doe", "age": 25, "email": "[email protected]", "is_active": True}
    ]
    return jsonify(users)

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

Ejercicio 2: Crear un Endpoint que Reciba y Devuelva Datos JSON

Crea un endpoint /api/user que acepte solicitudes POST con datos JSON y devuelva los mismos datos en la respuesta.

Solución:

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/api/user', methods=['POST'])
def create_user():
    data = request.json
    return jsonify(data), 201

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

Conclusión

En esta sección, hemos aprendido cómo manejar datos JSON en Flask, incluyendo la serialización y deserialización de JSON, el envío de respuestas JSON y la recepción y procesamiento de datos JSON en solicitudes. Estos conceptos son fundamentales para la creación de APIs RESTful eficientes y efectivas.

En el próximo tema, exploraremos la autenticación para APIs, un aspecto crucial para asegurar nuestras aplicaciones y proteger los datos de los usuarios.

Curso de Desarrollo Web con Flask

Módulo 1: Introducción a Flask

Módulo 2: Conceptos Básicos de Flask

Módulo 3: Formularios y Entrada de Usuario

Módulo 4: Integración de Bases de Datos

Módulo 5: Autenticación de Usuarios

Módulo 6: Conceptos Avanzados de Flask

Módulo 7: APIs RESTful con Flask

Módulo 8: Despliegue y Producción

Módulo 9: Pruebas y Mejores Prácticas

Módulo 10: Extensiones y Ecosistema de Flask

© Copyright 2024. Todos los derechos reservados