Saltar al contenido principal

Práctica 502. API GraphQL con Express.

Desarrolla una API GraphQL que gestione usuarios y sus pedidos utilizando Express. Cada usuario puede tener uno o varios pedidos, y cada pedido debe estar asociado a un usuario concreto.

Realiza los siguientes pasos:

  1. Crea un proyecto de Node.js con Express e instala las dependencias necesarias para GraphQL (express-graphql o @apollo/server según prefieras).

  2. Define un esquema GraphQL con los siguientes tipos:

    • Usuario → Incluye id, nombre y una lista de pedidos.
    • Pedido → Incluye id, descripcion, precio y el usuario asociado.
  3. Implementa los siguientes queries:

    • usuarios → Devuelve la lista de todos los usuarios, incluyendo sus pedidos.
    • usuario(id: Int!) → Devuelve un usuario concreto por ID, incluyendo sus pedidos.
    • pedidos → Devuelve la lista de todos los pedidos.
    • pedido(id: Int!) → Devuelve un pedido concreto por ID, incluyendo información del usuario asociado.
  4. Implementa las siguientes mutations:

    • crearUsuario(nombre: String!) → Crea un nuevo usuario.
    • actualizarUsuario(id: Int!, nombre: String!) → Actualiza los datos de un usuario existente.
    • eliminarUsuario(id: Int!) → Elimina un usuario y todos sus pedidos asociados.
    • crearPedido(usuarioId: Int!, descripcion: String!, precio: Float!) → Crea un nuevo pedido asociado a un usuario existente.
    • actualizarPedido(id: Int!, descripcion: String, precio: Float) → Actualiza un pedido existente.
    • eliminarPedido(id: Int!) → Elimina un pedido concreto.
  5. Prueba la API utilizando una interfaz de pruebas de GraphQL (por ejemplo GraphiQL o Apollo Studio), verificando que todas las queries y mutations funcionan correctamente y que la relación usuarios ↔ pedidos se mantiene coherente.

  6. Implementa validaciones básicas, asegurándote de que no se puedan crear pedidos para usuarios inexistentes y que los datos enviados cumplan con los tipos definidos en el esquema.