Skip to content

frangirona86/stackoverflow-test-app

Repository files navigation

StackOverflow Test App

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.

Tabla de Contenidos

Características

  • Restringe todas las rutas excepto /api con un código de error 400.
  • Acepta los siguientes parámetros:
    • tagged: (obligatorio) string
    • fromdate: (opcional) timestamp Unix
    • todate: (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.

Instalación

Clona el repositorio:

gh repo clone frangirona86/stackoverflow-test-app
cd stackoverflow-test-app

Instala las dependencias:

composer install
npm install
npm run dev

Configuración

Copia el archivo de entorno de ejemplo y configura las variables de entorno:

cp .env.example .env

Actualiza 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_PASSWORD

Genera la clave de la aplicación:

php artisan key:generate

Ejecuta las migraciones de la base de datos:

php artisan migrate

Ejecutar la Aplicación

Para iniciar el servidor de desarrollo de Laravel, ejecuta:

php artisan serve

La aplicación estará disponible en http://localhost:8000.

Endpoints de la API

GET /api

  • 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.

Modelos

ApiRequest

El modelo ApiRequest representa un registro de una solicitud de API realizada a la API de StackOverflow.

Validación de Solicitudes

BaseRequest

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.

Lógica del Controlador

ApiRequestController

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.

Capa de Servicio

ApiService

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors