Este proyecto está desarrollado en C# .NET 8 utilizando Visual Studio 2022.
Para la persistencia de datos se utiliza SQLite, elegido por su rapidez y facilidad de configuración. Además, se incluye un DataSeed con aproximadamente 10 registros iniciales, pensado para completar el circuito de funcionamiento, probar el desempeño y permitir que cualquier usuario disponga de datos reales apenas inicia la API.
La estructura del proyecto sigue el patrón de carpetas orientado a Repository, y cada capa de abstracción cuenta con su propia interfaz, asegurando una arquitectura desacoplada y fácilmente ampliable.
Con Swagger, los endpoints pueden probarse de forma sencilla desde el navegador.
Los endpoints:
/api/Product/compare
/api/Product/getall
/api/Product/addrecord
Los Endpoints getall y addrecord están diseñados para validar la funcionalidad, revisar el comportamiento general de la API y obtener GUIDs adicionales para futuras pruebas.
Si solo querés ejecutarlo sin tocar el código:
- ASP.NET Core Runtime 8.0.22
Descarga desde: https://dotnet.microsoft.com/es-es/download/dotnet/8.0
Probado en Windows 11.
/Repository
/Services
/Models
/DTOs
/DataAccess
/Controllers
- Repository → Interacción con SQLite.
- Services → Lógica de negocio.
- Models → Entidades internas.
- DTOs → Objetos expuestos al cliente.
- DataSeed → Datos iniciales.
- DataAccess → DbContext y configuración EF Core.
Los modelos nunca se exponen directamente, siempre se usan DTOs.
La API expone Swagger automáticamente, accesible en:
https://localhost:8071/swagger
"Urls": "http://0.0.0.0:8071"<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.22" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.22" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.22" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="8.1.4" />No hace falta usar dotnet restore ni dotnet run.
En la carpeta /build encontrarás un archivo .exe ya compilado y listo para ejecutar la API directamente.
Comparación de productos por GUID:
GET /api/Product/compare?guids=b670b04c-42af-fd64-414f-3c910aa3b1b5&guids=1d91e9af-79c8-2336-6fbf-c4378fca8358&guids=742112f6-9537-9b59-e23b-cee087387f30
Texto y comentarios corregidos con IA.