2. Desarrollo de componentes
Temas del programa: 3.1
Capas módulos y componentes
Section titled “Capas módulos y componentes” Préstamos EquiposPresentación Controller web + API Controller API Form Request Form Request Resource ResourceNegocio PrestamoService (Eloquent basta)Datos Repository + Model Model └──── PostgreSQL ────┘No todo módulo necesita todas las capas
Qué es una API
Section titled “Qué es una API”Un contrato que permite a otro programa usar tu sistema sin conocer su código
La URL del recurso
El método HTTP y los datos
El código de estado y el JSON
Actividad A2 — el contrato de la API de tu proyecto antes de programarla
REST en cinco ideas
Section titled “REST en cinco ideas”- Todo es un recurso con nombre en plural
- Cada recurso tiene su propia URL
- El método dice la acción no la URL
- Cada petición trae todo lo necesario incluido el token
- El código de estado dice el resultado
| Correcto | Incorrecto |
|---|---|
POST /api/v1/prestamos | POST /api/crearPrestamo |
Métodos HTTP
Section titled “Métodos HTTP”| Método | Uso | Seguro | Idempotente |
|---|---|---|---|
| GET | Leer | Sí | Sí |
| POST | Crear | No | No |
| PUT | Reemplazar | No | Sí |
| PATCH | Modificar parte | No | No |
| DELETE | Eliminar | No | Sí |
RFC 9110 HTTP Semantics secciones 9.2.1 y 9.2.2
Códigos que vas a usar
Section titled “Códigos que vas a usar”200 leer · 201 creado · 204 sin cuerpo
401 · 403 · 404 · 409 · 422 · 429
422 o 409
Section titled “422 o 409”Los datos están mal formados como una fecha de fin antes del inicio
Los datos son válidos pero chocan con el estado del sistema como un equipo ya reservado
No sé quién eres
Sé quién eres y no puedes hacer esto
3.2.3 Datos en tránsito
Section titled “3.2.3 Datos en tránsito”JSON ── petición ──► deserializar → validar → Service → PostgreSQLJSON ◄─ respuesta ── serializar (API Resource) ◄──────────┘fecha_inicio
2026-11-10T10:00:00Z
Nunca password
JSON no tiene tipo fecha · RFC 8259
El controlador integra no decide
Section titled “El controlador integra no decide”public function store(GuardarPrestamoRequest $request, PrestamoService $service){ $prestamo = $service->crear([ ...$request->validated(), 'user_id' => $request->user()->id, ]);
return PrestamoResource::make($prestamo->load('equipo')) ->response()->setStatusCode(201);}Form Request y Service son los del Bloque II sin cambios · user_id sale del token nunca del cuerpo
Relación con el laboratorio
Section titled “Relación con el laboratorio”Este tema se practica en el Laboratorio 2 — API REST del proyecto.
Qué sigue
Section titled “Qué sigue”Continúa con 3. Manejo de errores.

