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 de terceros

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.