Domina Cursor, el editor de código con IA que multiplica tu productividad como desarrollador.

0 de 35 lecciones completas (0%)

PROYECTO: TIENDA DE LIBROS ELECTRÓNICOS FULL STACK

Obtener todos los libros y actualizar uno

Introducción

En esta lección implementaremos las funcionalidades para obtener todos los libros, obtener un libro específico, actualizar libros y obtener la URL del PDF. Completaremos así nuestro CRUD básico para el manejo de libros.

1. Obtener Todos los Libros

Configuración del Endpoint

  • Método: GET
  • URL: /books
  • Propósito: Obtener la lista completa de libros

Configuración en Postman

  1. Crear nueva petición: «Obtener Todos los Libros»
  2. Método: Cambiar de POST a GET
  3. URL: http://localhost:3000/books
  4. Enviar petición y verificar respuesta
json// Respuesta esperada
[
  {
    "id": "1",
    "title": "El Gran Gatsby",
    "author": "F. Scott Fitzgerald",
    "category": "ficción",
    "price": 9.99,
    // ... más campos
  }
]

2. Obtener un Libro Específico

Configuración del Endpoint

  • Método: GET
  • URL: /books/:id/details
  • Propósito: Obtener información detallada de un libro específico

Implementación en Postman

  1. Crear nueva petición: «Detalles del Libro»
  2. Método: GET
  3. URL: http://localhost:3000/books/[ID_DEL_LIBRO]/details
  4. Reemplazar [ID_DEL_LIBRO] con un ID real de la base de datos

Ejemplo de Uso

GET /books/64f2a1b5c8d4e5f6a7b8c9d0/details

3. Actualizar un Libro

Configuración del Endpoint

  • Método: PUT
  • URL: /books/:id
  • Propósito: Actualizar información de un libro existente

Configuración en Postman

  1. Crear nueva petición: «Actualizar Libro»
  2. Método: PUT
  3. URL: http://localhost:3000/books/[ID_DEL_LIBRO]
  4. Body: Incluir campos a actualizar

Ejemplo de Actualización

json{
  "title": "El Gran React",
  "description": "Un libro actualizado sobre React",
  "price": 12.99
}

4. Solución de Problemas de Autorización

Error Común: «No autorizado»

Problema: Al intentar actualizar, aparece el error «not authorized to update this book»

Causa: Error en la validación de permisos en el controlador

Solución

  1. Revisar el controlador de actualización
  2. Verificar la lógica de autorización: javascript// Incorrecto if (req.user !== book.uploadedBy) { return res.status(401).json({ error: 'No autorizado' }); } // Correcto if (req.user.id !== book.uploadedBy.toString()) { return res.status(401).json({ error: 'No autorizado' }); }
  3. Asegurar que el middleware de autenticación funcione correctamente

5. Obtener URL del PDF

Configuración del Endpoint

  • Método: GET
  • URL: /books/:id/pdf
  • Propósito: Obtener únicamente la URL del archivo PDF

Implementación en Postman

  1. Crear nueva petición: «Obtener URL del PDF»
  2. Método: GET
  3. URL: http://localhost:3000/books/[ID_DEL_LIBRO]/pdf

Respuesta Esperada

json{
  "pdfUrl": "https://res.cloudinary.com/your-cloud/raw/upload/v1234567890/books/sample.pdf"
}

6. Resumen de Endpoints Implementados

Lista Completa de Endpoints

MétodoEndpointDescripción
POST/booksCrear nuevo libro
GET/booksObtener todos los libros
GET/books/:id/detailsObtener detalles de un libro
PUT/books/:idActualizar libro
GET/books/:id/pdfObtener URL del PDF

Códigos de Estado HTTP

  • 200: Operación exitosa
  • 201: Libro creado exitosamente
  • 400: Datos de entrada inválidos
  • 401: No autorizado
  • 404: Libro no encontrado
  • 500: Error interno del servidor

7. Pruebas y Validación

Lista de Verificación

  • Obtener todos los libros: La lista se muestra correctamente
  • Obtener libro específico: Los detalles se muestran completos
  • Actualizar libro: Los cambios se guardan correctamente
  • Obtener URL del PDF: La URL es accesible y funcional
  • Manejo de errores: Los errores se muestran apropiadamente

Datos de Prueba

Para probar las funcionalidades, asegúrate de tener:

  • Al menos un libro creado en la base de datos
  • Token de autenticación válido para operaciones protegidas
  • IDs de libros reales para las pruebas de detalles y actualización

8. Mejores Prácticas

Validación de Entrada

  • Verificar que los IDs sean válidos antes de procesar
  • Validar campos requeridos en las actualizaciones
  • Sanitizar datos de entrada para evitar inyecciones

Respuestas Consistentes

  • Estructura uniforme en todas las respuestas
  • Mensajes de error claros y descriptivos
  • Códigos de estado HTTP apropiados

Seguridad

  • Autenticación requerida para operaciones sensibles
  • Autorización adecuada para prevenir acceso no autorizado
  • Validación de pertenencia del recurso al usuario

Conclusión

Con estos endpoints implementados, tenemos un sistema completo de gestión de libros que permite:

  • Operaciones CRUD completas
  • Manejo seguro de archivos PDF
  • Control de acceso y autorización
  • APIs RESTful bien estructuradas

El controlador de libros está ahora completamente funcional y listo para integrarse con el frontend de la aplicación. Con solo unos pocos prompts bien estructurados, hemos logrado crear endpoints robustos y funcionales.

Resumen de privacidad
Logo JeroCuevas.com

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Cookies estrictamente necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Analítica

Esta web utiliza Google Analytics para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

Dejar esta cookie activa nos permite mejorar nuestra web.