Café y Código

6. Creación de APIs REST con JSON

¿Qué es una API RESTful en Flask?

En lugar de renderizar plantillas HTML para navegadores, una API backend recibe y responde estructurando los datos en formato JSON. Esto permite conectar aplicaciones front-end modernas (React, Vue, Angular) o apps móviles (Android, iOS).

Devolver JSON con jsonify

Flask provee la función jsonify() que serializa diccionarios o listas de Python a cadenas JSON y configura el encabezado HTTP Content-Type: application/json.

api_basica.py
PYTHON
1from flask import Flask, jsonify
2
3app = Flask(__name__)
4
5
6@app.route('/api/estado')
7def obtener_estado():
8 return jsonify({
9 'status': 'online',
10 'version': '1.0.0',
11 'servidor': 'Flask WSGI'
12 })

Recibir JSON en peticiones POST/PUT

Para leer el payload JSON enviado por un cliente en el cuerpo de la petición, se utiliza request.get_json().

api_post.py
PYTHON
1from flask import request
2
3
4@app.route('/api/productos', methods=['POST'])
5def crear_producto_api():
6 datos = request.get_json()
7
8 if not datos or 'nombre' not in datos:
9 return jsonify({'error': 'Falta el campo nombre'}), 400
10
11 nombre = datos['nombre']
12 precio = datos.get('precio', 0.0)
13
14 # Lógica de guardado...
15 return jsonify({
16 'mensaje': 'Producto creado con éxito',
17 'producto': {'nombre': nombre, 'precio': precio}
18 }), 201

Diseño de Endpoints RESTful

Un diseño REST claro mapea las operaciones sobre recursos utilizando los métodos HTTP adecuados y códigos de estado (Status Codes):

  • GET /api/cursos/ (200 OK): Obtener todos los cursos.
  • POST /api/cursos/ (201 Created): Crear un nuevo curso.
  • GET /api/cursos/1/ (200 OK / 404 Not Found): Obtener detalle de un curso.
  • DELETE /api/cursos/1/ (200 OK / 204 No Content): Eliminar un curso.

Ponte a prueba

Comprueba tus conocimientos sobre creación de APIs en Flask.

Ko-fi
Donaciones
Apoyá cafeycodigo con un café en Ko-fi. Colaboradores: insignia, muro y zona exclusiva.