El ejemplo que recorre este libro es un servicio real: la License API de Krodox. Es lo bastante simple para entenderla enseguida y lo bastante real para mostrar los patrones que importan.
La API hace una sola cosa: gestiona licencias de sitios web.
Krodox aprovisiona sitios web, y cada sitio funciona sobre Statamic CMS, que necesita una licencia. En el momento en que se aprovisiona un sitio, la plataforma le pide una a la License API. A partir de ahí, otros servicios de Krodox llaman a esta API para crear, listar y revocar licencias. No es una API pública. Sus consumidores son los propios servicios de Krodox y las integraciones de aprovisionamiento de unos pocos socios, cada uno identificado por un token.
La License API no emite las licencias ella misma. Le pide a Statamic que las emita y le da otra forma a la respuesta. Ese detalle importa para todo lo que sigue, porque significa que esta API no tiene tabla licenses ni modelo License. Sus datos viven detrás de la API HTTP de otra empresa, una que puede ir lenta, limitar las peticiones o estar caída.
Tres endpoints de licencias y un proveedor externo: ahí empieza el libro, y basta para necesitar casi todo lo que el libro cubre. Los capítulos posteriores añaden endpoints para gestionar a los propios consumidores de la API.
Krodox tiene también otros servicios. Uno registra nombres de dominio, otro gestiona repositorios de código, otro genera contenido, otro recoge analíticas, y uno central, el hub, aprovisiona los sitios y coordina a los demás. Este libro se queda dentro de la License API, pero algunos temas, como las consultas lentas a la base de datos o el trabajo que abarca varios pasos, necesitan un sistema más grande para poder mostrarse. Cuando un ejemplo viene de uno de esos servicios hermanos, el texto lo dice, y el Capítulo 21 explica cómo encajan entre sí.
Empezar desde cero
Crea un proyecto nuevo de Laravel y dile que vas a construir una API:
composer create-project laravel/laravel api-license
cd api-license
php artisan install:api
install:api crea routes/api.php, lo registra bajo el prefijo /api e instala Laravel Sanctum, que el Capítulo 4 usa para autenticar. (Documentación de Laravel: Routing › API Routes.)
Eso es todo. Cuando empecé con PHP, montar un framework significaba conectar a mano archivos de configuración y scripts de arranque antes de poder escribir una sola línea de código de verdad. Laravel ya tomó esas decisiones y las entrega como valores por defecto.
No estás obligado a conservar esos valores. Puedes personalizarlo todo. Pero cuando te descubras peleando con el framework, suele ser señal de que estás tomando una decisión que el framework intentaba ahorrarte.