July 15, 2025
Como crear API REST con .NET 8
Introducción a .NET
Nombres
Completo
Tu descripción sobre las versiones de .NET y los frameworks asociados es esencialmente correcta, pero puedo ofrecerte más detalles y sugerir algunas tecnologías adicionales que son importantes en este contexto.
.NET Framework - 2002
El .NET Framework fue lanzado por Microsoft en 2002 como una plataforma para desarrollar y ejecutar aplicaciones en Windows. Esta versión incluye ASP.NET, que es un framework diseñado para la creación de aplicaciones web en .NET Framework. El .NET Framework es conocido por su integración con Windows y sigue siendo utilizado principalmente para aplicaciones de escritorio y servicios empresariales en entornos Windows.
.NET Core - 2016
.NET Core fue introducido en 2016 como una versión modular y multiplataforma de .NET. Está diseñado para ser ligero, con soporte para sistemas operativos como Linux y macOS, además de Windows. .NET Core es la base de ASP.NET Core, que es la versión moderna y multiplataforma de ASP.NET, utilizada para crear aplicaciones web y servicios que pueden ejecutarse en diferentes plataformas.
.NET (anteriormente conocido como .NET 5) - 2020
En 2020, Microsoft unificó .NET Framework y .NET Core bajo una única plataforma llamada simplemente .NET, comenzando con .NET 5. Esta versión representa una fusión de lo mejor de .NET Framework y .NET Core, ofreciendo una única plataforma para desarrollar aplicaciones para escritorio, web, móvil, nube, y más. A partir de .NET 5, ASP.NET Core se convirtió en la opción predeterminada para el desarrollo web en esta plataforma.
Frameworks para desarrollo de aplicaciones web:
- ASP.NET: Diseñado originalmente para trabajar con .NET Framework, ASP.NET es un framework robusto para el desarrollo de aplicaciones web en Windows. Utiliza tecnologías como Web Forms y MVC para la creación de interfaces web y APIs.
- ASP.NET Core: Este es un framework moderno, modular, y multiplataforma para el desarrollo de aplicaciones web y servicios. Aunque fue diseñado para .NET Core, también puede ejecutarse en .NET Framework (en versiones anteriores a ASP.NET Core 3.0). ASP.NET Core ofrece características avanzadas como integración con contenedores Docker, soporte para microservicios, y un pipeline HTTP optimizado para alto rendimiento.
Sugerencias adicionales:
- .NET Standard: Especificación que define un conjunto común de APIs que deben estar disponibles en todas las implementaciones de .NET, como .NET Framework, .NET Core y Xamarin. Esto facilita la creación de bibliotecas reutilizables en diferentes plataformas .NET.
- Blazor: Una tecnología relativamente nueva dentro de ASP.NET Core que permite desarrollar aplicaciones web interactivas utilizando C# en lugar de JavaScript. Blazor soporta tanto aplicaciones del lado del servidor como del lado del cliente (WebAssembly).
.NET Framework - 2002
.NET Core 2016
.NET -2020
Framework para desarollo de aplicaciones web:
- ASP.NET ⇒ Diseñado para trabajar con .Net Framework
- ASP.NET Core (.Net Core)
Creación del Proyecto

Archivo del Proyecto
.csproj
<Project Sdk="Microsoft.NET.Sdk.Web">
<!-- Grupo de propiedades generales del proyecto -->
<PropertyGroup>
<!-- Define el framework objetivo del proyecto. En este caso, .NET 8.0 -->
<TargetFramework>net8.0</TargetFramework>
<!-- Habilita las referencias nullable en el código C# -->
<Nullable>enable</Nullable>
<!-- Habilita la adición implícita de directivas 'using' para namespaces comunes -->
// El compilador agregara los usings por nosotros, similar a los imports en node
<ImplicitUsings>enable</ImplicitUsings>
<!-- Configura el proyecto para utilizar la globalización invariante -->
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
<!-- Grupo de elementos que incluye referencias a paquetes NuGet -->
<ItemGroup>
<!-- Incluye el paquete Swashbuckle.AspNetCore versión 6.4.0 -->
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
</ItemGroup>
</Project>Que es Nuget:
Sistema de Gestión de paquetes (el NPM)
NewGet
Archivo Program.cs
Representa la entrada principal del programa, se cofigura y ejecuta la aplicación
// Inicializa un constructor para la aplicación web ASP.NET Core, configurando la aplicación con las opciones de configuración y argumentos de línea de comandos.
var builder = WebApplication.CreateBuilder(args);
// Registra el servicio de controladores en el contenedor de servicios, permitiendo el uso de controladores para manejar solicitudes HTTP.
builder.Services.AddControllers();
// Habilita la exploración de endpoints para generar documentación de API.
builder.Services.AddEndpointsApiExplorer();
// Agrega el servicio Swagger para generar documentación interactiva de la API en formato OpenAPI.
builder.Services.AddSwaggerGen();
// Crea una instancia de la aplicación web con la configuración y los servicios registrados anteriormente.
var app = builder.Build();
// Verifica si el entorno es de desarrollo para configurar el pipeline de solicitudes HTTP adecuadamente.
if (app.Environment.IsDevelopment())
{
// Habilita la generación de la documentación Swagger en entorno de desarrollo.
app.UseSwagger();
// Habilita la interfaz gráfica de Swagger para visualizar y probar los endpoints de la API.
app.UseSwaggerUI();
}
// Fuerza que todas las solicitudes HTTP se redirijan a HTTPS para asegurar la comunicación segura.
app.UseHttpsRedirection();
// Agrega el middleware de autorización, asegurando que solo los usuarios autorizados puedan acceder a los recursos protegidos.
app.UseAuthorization();
// Configura las rutas para los controladores, permitiendo que la aplicación maneje las solicitudes entrantes en función de los controladores definidos.
app.MapControllers();
// Inicia la aplicación y la pone en marcha para que empiece a escuchar solicitudes HTTP.
app.Run();Probando controller por defecto
Para arrancar la app en modo de desarollo:

Veremos que tenemos el controlador WeatherForecastController, el cual genera datos de manera aleatoria los datos
Respuesta
[
{
"date": "2024-08-11",
"temperatureC": 4,
"temperatureF": 39,
"summary": "Hot"
},
{
"date": "2024-08-12",
"temperatureC": 2,
"temperatureF": 35,
"summary": "Scorching"
},
{
"date": "2024-08-13",
"temperatureC": -13,
"temperatureF": 9,
"summary": "Sweltering"
},
{
"date": "2024-08-14",
"temperatureC": 5,
"temperatureF": 40,
"summary": "Cool"
},
{
"date": "2024-08-15",
"temperatureC": 41,
"temperatureF": 105,
"summary": "Warm"
}
]Modelo
Creamos la Carpeta
Paquete Entity Framework
Contexto
Creamos carpeta Context
UNa vez creada, debemos hacer que nuestra clase herede de DbContext:

Db Context, que es?
Es un ORM facilita el acceso y manipulacion de bases de datos.
Representa una sesión de trabajo en nuestra Base de datos
Se usa para hacer operaciones de crud en los datos que estan almacenados.
Proporciona un conjunto de APIs para manipular los datos:
los metodos más comunes son
find ,set, get …[gpt]
Creamos el Constructor:
Para inicializar el contexto de la base de datos
DB Set, que es?
DB Connection - Conexión a la base de datos
Ejemplo SmartYard

El nombre lo elegimos nosotros


Paquete Entity FrameWork Core SQL Server
Vamos a NuGet

Ahora tenemos que crear una variable en Program.cs

Con esto ya tendriamos registrado nuestro servicio
Paquete Entity Framework Core Tools
Sirve para que podamos ejecutar nuestras migraciones

Abriremos la consola del administrador de paquetes, Esta consola es distinta al CMD

Usaremos el Comando Add-Migration Initial

Si sale bien, Esto creara una carpeta en nuestro proyecto que se va a llamar Migration

Y dentro encontraremos:

Tenemos 2 Métodos, Up y Down
(En Up, están las instrucciones para crear la tabla en la base de datos)
los datos que aparecen son tomados de nuestro modelo
Ahora tenemos que reflejar todos estos datos en la base de datos, para ello usaremos el comando:

Si da un error cambiar esta propiedad a false:

DB Desde SQL Server Managment Studio

La tabla EFMigrationsHistory contiene un historial de las migraciones que vamos añadiendo o eliminando


Pero ahora mismo no hay nada dentro
Controlador
En la carpeta Controllers:



y se crea PresonController automaticamente tomando el modelo con las operaciones CRUD básicas

Esto es una ami minima, lo que deberiamos hacer es separar la responsabilidad por capas donde separar la logica del modelo…
Probando nuestra API
hasta aqui ya tendriamos una apli completa funcionando con Swagger
Vamos a crear un registro:


Otros:
Crear solución en un project existente: Desde el visor de soluciones (dando doble click a .sln)
Si no compila bien
- En la barra superior:
- Ejecuta:
powershell
CopiarEditar
dotnet restore

Written by Pol Valle
I am particularly drawn to developing applications that are not only functional but also visually appealing and easy to use. I accomplish this by implementing SOLID principles and clean architecture, and applying testing to ensure quality.