0Pricing
Python Academy · Lección

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

  1. Rutas y vistas
  2. Plantillas con Jinja2
  3. Formularios y datos de solicitudes
  4. Construcción de un endpoint REST
← Volver a Python Academy