Este proyecto es una API REST desarrollada con Laravel 11 que consume información de la API de StackOverflow. El endpoint principal de la API es /api con el método GET. Esta aplicación restringe el acceso a otras rutas devolviendo un código de error 400.
- Características
- Instalación
- Configuración
- Ejecutar la Aplicación
- Endpoints de la API
- Modelos
- Validación de Solicitudes
- Lógica del Controlador
- Capa de Servicio
- Restringe todas las rutas excepto
/apicon un código de error400. - Acepta los siguientes parámetros:
tagged: (obligatorio) stringfromdate: (opcional) timestamp Unixtodate: (opcional) timestamp Unix
- Verifica en la base de datos solicitudes existentes antes de consultar la API de StackOverflow.
- Almacena las solicitudes y respuestas de la API en la base de datos.
Clona el repositorio:
gh repo clone frangirona86/stackoverflow-test-app
cd stackoverflow-test-appInstala las dependencias:
composer install
npm install
npm run devCopia el archivo de entorno de ejemplo y configura las variables de entorno:
cp .env.example .envActualiza las siguientes variables en el archivo .env:
DB_CONNECTION=DB_CONNECTION
DB_HOST=DB_HOST
DB_PORT=DB_PORT
DB_DATABASE=DB_DATABASE
DB_USERNAME=DB_USERNAME
DB_PASSWORD=DB_PASSWORDGenera la clave de la aplicación:
php artisan key:generateEjecuta las migraciones de la base de datos:
php artisan migratePara iniciar el servidor de desarrollo de Laravel, ejecuta:
php artisan serveLa aplicación estará disponible en http://localhost:8000.
- Descripción: Obtiene información de la API de StackOverflow.
- Parámetros:
-
- `tagged`: (obligatorio) string
- `fromdate`: (opcional) timestamp Unix
- `todate`: (opcional) timestamp Unix
- Respuesta: Respuesta en formato JSON de la API de StackOverflow o datos de la base de datos.
El modelo ApiRequest representa un registro de una solicitud de API realizada a la API de StackOverflow.
La clase BaseRequest maneja la validación de los parámetros de la solicitud. Garantiza que se proporcione el parámetro tagged y ajusta los parámetros opcionales para cumplir con los requisitos de la API de StackOverflow.
El ApiRequestController maneja las solicitudes entrantes al endpoint /api.
Realiza los siguientes pasos:
- Valida la solicitud utilizando BaseRequest.
- Verifica en la base de datos si existe una solicitud coincidente con los parámetros.
- Si la solicitud existe, devuelve la respuesta.
- Si la solicitud no existe, llama al ApiService para obtener datos de la API de StackOverflow.
- Guarda la nueva solicitud y la respuesta en la tabla api_requests.
- Devuelve la respuesta al cliente.
El ApiService es responsable de realizar solicitudes a la API de StackOverflow. Toma los parámetros validados y construye la consulta adecuada para obtener datos de StackOverflow.