Construcción de un endpoint REST
Devuelva respuestas JSON
Construcción de un endpoint REST es una lección gratuita de Python Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Python Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Python Academy incluye 4 lecciones en total.
¿Qué es una API REST?
Una API REST expone recursos mediante HTTP usando verbos estándar. En lugar de páginas HTML, devuelve datos, normalmente en formato JSON, para que otros programas los consuman.
from flask import Flask, jsonify
app = Flask(__name__)
# REST endpoints return data, not pages
print('REST APIs speak JSON over HTTP')Devolver JSON
jsonify() convierte un diccionario o una lista de Python en una respuesta JSON con el tipo de contenido correcto.
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/status')
def status():
return jsonify({'status': 'ok'})
print('jsonify builds a JSON response')Los diccionarios se convierten automáticamente
El Flask moderno también convierte automáticamente en JSON un diccionario devuelto, por lo que a menudo puede omitir jsonify().
from flask import Flask
app = Flask(__name__)
@app.route('/api/ping')
def ping():
return {'message': 'pong'}
print('Returning a dict yields JSON')Devolver una lista
Para devolver una colección, pase una lista a jsonify(). Normalmente, cada elemento es un diccionario que representa un recurso.
from flask import Flask, jsonify
app = Flask(__name__)
books = [{'id': 1, 'title': 'A'}, {'id': 2, 'title': 'B'}]
@app.route('/api/books')
def list_books():
return jsonify(books)
print('Return a list of resources')GET de un recurso
Use una parte dinámica de la URL para obtener un único elemento mediante su id. Devuelva 404 si no existe.
from flask import Flask, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}
@app.route('/api/books/<int:bid>')
def get_book(bid):
book = books.get(bid)
if book is None:
return jsonify({'error': 'not found'}), 404
return jsonify(book)
print('GET /api/books/1')Crear con POST
Una solicitud POST crea un recurso. Lea el cuerpo JSON, construya el nuevo elemento y devuélvalo con el estado 201 Created.
from flask import Flask, request, jsonify
app = Flask(__name__)
books = []
@app.route('/api/books', methods=['POST'])
def create_book():
data = request.get_json()
book = {'id': len(books) + 1, 'title': data['title']}
books.append(book)
return jsonify(book), 201
print('POST creates and returns 201')Actualizar con PUT
PUT reemplaza o actualiza un recurso existente identificado por su id.
from flask import Flask, request, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}
@app.route('/api/books/<int:bid>', methods=['PUT'])
def update_book(bid):
if bid not in books:
return jsonify({'error': 'not found'}), 404
books[bid]['title'] = request.get_json()['title']
return jsonify(books[bid])
print('PUT updates a resource')Eliminar con DELETE
DELETE elimina un recurso. Devolver el estado 204 No Content es habitual cuando la operación tiene éxito.
from flask import Flask, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}
@app.route('/api/books/<int:bid>', methods=['DELETE'])
def delete_book(bid):
if bid in books:
del books[bid]
return '', 204
return jsonify({'error': 'not found'}), 404
print('DELETE removes a resource')Los códigos de estado importan
REST se basa en códigos de estado HTTP: 200 OK, 201 Created, 204 No Content, 400 Bad Request, 404 Not Found.
# 200 success
# 201 created
# 204 no content
# 400 bad request
# 404 not found
print('Use the right status code')Validar el cuerpo
Compruebe que los campos obligatorios estén presentes antes de crear el recurso. Devuelva 400 con un mensaje de error cuando el cuerpo no sea válido.
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/api/books', methods=['POST'])
def create_book():
data = request.get_json(silent=True) or {}
if 'title' not in data:
return jsonify({'error': 'title required'}), 400
return jsonify(data), 201
print('Validate JSON before using it')Respuestas coherentes
Las buenas API devuelven una estructura predecible y suelen envolver los datos y los errores de la misma forma en cada ocasión, para que los clientes puedan confiar en ella.
from flask import jsonify
# Success: {'data': {...}}
# Error: {'error': 'message'}
# Keep the shape consistent across endpoints
print('Predictable shapes help clients')Comprobación rápida
Ponga a prueba sus conocimientos sobre REST.
Recapitulación
Creó un endpoint REST que devuelve JSON.
jsonify()(o un diccionario devuelto) produce respuestas JSON- Asigne los verbos HTTP: GET lee, POST crea, PUT actualiza y DELETE elimina
- Devuelva códigos de estado significativos como 201, 204, 400 y 404
- Valide el cuerpo de la solicitud y mantenga respuestas coherentes
Preguntas frecuentes
¿La lección «Construcción de un endpoint REST» es gratis?
Sí — el texto completo de «Construcción de un endpoint REST» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Python Academy, actualiza a CoddyKit PRO. El curso de Python Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Construcción de un endpoint REST»?
Devuelva respuestas JSON Practicas Python Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Python Academy?
No se requiere experiencia previa. Python Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Construcción de un endpoint REST»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Python Academy?
Sí. Cada lección de Python Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Rutas y vistas
- Plantillas con Jinja2
- Formularios y datos de solicitudes
- Construcción de un endpoint REST