Saltar al pie de página
Iron Academy Logo
Aplicación C#
Aplicación C#

Otras categorías

Creación de aplicaciones web en C# con ASP.NET Core

Tim Corey
52m 05s

La creación de aplicaciones web es una habilidad fundamental para los desarrolladores modernos, por lo que es esencial comprender las estructuras básicas subyacentes a los proyectos. Este artículo, inspirado en el vídeo de Tim Corey "Intro to Web API", se sumerge en las complejidades de la creación de aplicaciones web con el marco ASP.NET Core.

Siguiendo las ideas de Tim, exploraremos cómo instalar, configurar y optimizar su aplicación web, aprovechando todo el potencial del marco ASP.NET Core para crear páginas web y API eficientes y fáciles de mantener. Tanto si es nuevo en el desarrollo web como si busca perfeccionar sus habilidades, esta guía le ayudará a navegar por las complejidades de la carga de trabajo del desarrollo web, proporcionándole los conocimientos necesarios para crear aplicaciones web eficaces y de alto rendimiento.

Introducción

Tim Corey inicia su tutorial introduciendo el tema de la creación de API con ASP .NET Core. Destaca la importancia de comprender los fundamentos de las API para crear aplicaciones web sólidas y escalables.

Tim prepara el escenario explicando el papel fundamental que desempeñan las API en el desarrollo de software moderno, facilitando la comunicación entre diferentes marcos de desarrollo web como el servidor web Blazor y el ensamblaje web Blazor. Incluso el tipo de proyecto subyacente de Razor pages es ASP.NET Core, lo que permite una integración perfecta de diversas funcionalidades en varios proyectos para crear aplicaciones web.

Creación de un proyecto de API web ASP.NET Core

Para empezar, Tim Corey muestra cómo configurar un nuevo proyecto de API web ASP.NET Core. Estos son los pasos que se describen en el vídeo:

  1. Abre Visual Studio: Comienza abriendo Visual Studio Installer y seleccionando la opción de crear un nuevo proyecto.

Abriendo Visual Studio

  1. Elige la plantilla de API: En las plantillas de proyecto, seleccione "ASP.NET Core Web API" y haga clic en Siguiente.

Elegir plantilla de API

  1. Configurar los ajustes del proyecto: Introduzca el nombre del proyecto, elija la ubicación y el nombre de la solución.

Configurando los ajustes del proyecto

  1. Información adicional: Elige el .NET Framework, selecciona el tipo de autenticación y recomienda no cambiar otras configuraciones.

Información adicional

  1. Crear el proyecto: Haz clic en "Crear" para generar el proyecto con las configuraciones predeterminadas y el código necesario.

Esta configuración proporciona una base para explorar el desarrollo de API, con Visual Studio generando una estructura básica que incluye componentes esenciales como Program.cs, la carpeta controllers y appsettings.json.

Resumen de la aplicación API por defecto

En el minuto 5:57 del vídeo de Tim Corey, ofrece una visión general de la aplicación API por defecto generada por ASP.NET Core.

Ejecutar la aplicación por defecto

Tim comienza ejecutando la aplicación por defecto para ilustrar lo que los desarrolladores obtienen al sacarla de la caja. Una vez ejecutado, el proyecto crea la API, descarga los paquetes NuGet necesarios y abre una página web. Esta configuración inicial demuestra la estructura básica y las funcionalidades de la API sin ninguna modificación.

Ejecutando la aplicación predeterminada

Interacción con la API

La página web que se lanza funciona con Swagger, ahora conocido como OpenAPI. Swagger proporciona una interfaz fácil de usar para interactuar con la API. Permite tanto a desarrolladores como a no desarrolladores comprender y probar los puntos finales de la API con facilidad. Esta interfaz es especialmente útil para visualizar el funcionamiento de la API y para fines de documentación.

Explorando Swagger

Swagger muestra los puntos finales disponibles en la API. En la configuración por defecto, uno de los puntos finales preconfigurados es el de "previsión meteorológica". Al hacer clic en este punto final y utilizar la función "Pruébelo", los usuarios pueden ejecutar la llamada a la API y ver la respuesta. Esta respuesta incluye una previsión meteorológica en formato JSON, lo que demuestra cómo se devuelven los datos desde la API.

Tim destaca en el minuto 8:32 que, si bien los datos JSON en bruto pueden ser difíciles de leer directamente desde el navegador, la documentación superpuesta de Swagger los hace mucho más digeribles. La documentación proporciona información detallada sobre el punto final, incluido el método de solicitud (GET, POST, etc.), la estructura de los datos devueltos y los parámetros necesarios.

Documentación JSON y versiones de API

Swagger también genera un archivo JSON, como señala Tim en el minuto 9:10, que documenta la API en un formato legible por máquina. Esta documentación es crucial para otras aplicaciones que necesiten interactuar con la API, ya que describe los puntos finales disponibles, los esquemas de datos y las respuestas esperadas.

Tim, a las 9:29, señala la importancia del control de versiones en las API. La configuración por defecto incluye un indicador de versión, que apunta a la posibilidad de que existan varias versiones de la API. El control de versiones es vital para mantener la compatibilidad con versiones anteriores. Cuando los cambios en la API pueden romper los clientes existentes, tener varias versiones permite a los desarrolladores introducir nuevas características o cambios sin interrumpir a los usuarios actuales.

Qué es una API

En el minuto 11:22, Tim Corey explica el papel fundamental de las API (interfaces de programación de aplicaciones) en el desarrollo web moderno. Destaca su importancia para gestionar y asegurar los intercambios de datos entre distintos componentes de software.

Propósito de las API

Tim subraya que la mayoría de las aplicaciones giran en torno a la recuperación, manipulación y visualización de datos. Las API actúan como intermediarias entre la interfaz de usuario y los datos subyacentes, proporcionando un medio seguro y eficaz de acceso a los datos. Esta centralización es crucial por varias razones:

  1. Seguridad: Las API ofrecen una forma segura de gestionar el acceso a los datos. Las aplicaciones móviles y del lado del cliente no deben conectarse directamente a bases de datos para evitar incrustar credenciales de bases de datos en el código del cliente, lo que plantea importantes riesgos de seguridad.

  2. Abstracción: Las API abstraen la capa de datos de la interfaz de usuario, lo que permite que diferentes aplicaciones cliente (aplicaciones móviles, aplicaciones web, aplicaciones de escritorio) interactúen con la misma fuente de datos sin exponer la base de datos o sus credenciales.

Versatilidad en diferentes marcos

Tim señala que las API no se limitan a marcos de trabajo o lenguajes específicos. Por ejemplo, se puede acceder a una API de C# desde frameworks de JavaScript como Angular, React o Vue, lo que demuestra las capacidades multiplataforma de las API.

Revisión del código de la aplicación web API

En el minuto 15:21, Tim Corey comienza un recorrido detallado de la estructura y funcionalidad de un proyecto de la API de .NET Core. A continuación se exponen los puntos clave de sus explicaciones que es necesario comprender cuando se trabaja con el servidor HTTP y las tecnologías del lado del servidor al crear una API de aplicaciones web:

1. Descripción general de Program.cs

Tim revisa Program.cs, señalando que construye la aplicación web y configura servicios como la inyección de dependencias para controladores y Swagger (OpenAPI). El código configura los servicios esenciales antes de crear y ejecutar la aplicación.

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

2. Configuración del entorno

Tim explica cómo se configuran los ajustes del entorno en launchSettings.json. El entorno predeterminado es "Desarrollo" para las pruebas locales, lo que permite Swagger. En producción, Swagger suele estar desactivado por motivos de seguridad, pero puede activarse eliminando la comprobación de desarrollo.

{
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "WebApplication": {
      "commandName": "Project",
      "launchBrowser": true,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

3. Redirección y controladores HTTPS

Tim destaca la redirección HTTPS y la asignación de controladores. Esta configuración garantiza que las rutas API estén correctamente configuradas. Prefiere utilizar un prefijo "api" para mayor claridad en las rutas HTTP de solicitud y respuesta, que pueden modificarse para garantizar que las rutas API sean distintas.

4. Controlador de previsiones meteorológicas

Tim profundiza en WeatherForecastController.cs, destacando la configuración de rutas. La ruta predeterminada es /weatherforecast, que se puede modificar para incluir un prefijo "api". El controlador utiliza HTTP GET para recuperar datos, a los que se puede acceder a través de la ruta especificada.

using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

    private readonly ILogger<WeatherForecastController> _logger;

    public WeatherForecastController(ILogger<WeatherForecastController> logger)
    {
        _logger = logger;
    }

    [HttpGet]
    public IEnumerable<WeatherForecast> Get()
    {
        return Enumerable.Range(1, 5).Select(index => new WeatherForecast
        {
            Date = DateTime.Now.AddDays(index),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        })
        .ToArray();
    }
}

public class WeatherForecast
{
    public DateTime Date { get; set; }

    public int TemperatureC { get; set; }

    public string? Summary { get; set; }
}
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

    private readonly ILogger<WeatherForecastController> _logger;

    public WeatherForecastController(ILogger<WeatherForecastController> logger)
    {
        _logger = logger;
    }

    [HttpGet]
    public IEnumerable<WeatherForecast> Get()
    {
        return Enumerable.Range(1, 5).Select(index => new WeatherForecast
        {
            Date = DateTime.Now.AddDays(index),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        })
        .ToArray();
    }
}

public class WeatherForecast
{
    public DateTime Date { get; set; }

    public int TemperatureC { get; set; }

    public string? Summary { get; set; }
}

5. Verbos HTTP y enrutamiento

Tim explica cómo los verbos HTTP (GET, POST, PUT, DELETE) definen los puntos finales de la API. Para una solicitud GET, el navegador llama al método especificado en el controlador. Otros verbos requieren herramientas como Postman para realizar pruebas.

Creación de un controlador de API

Tim muestra el proceso de creación de un controlador de API:

  1. Añadir un controlador: Haz clic con el botón derecho en la carpeta "Controllers" y selecciona "Add > Controller."

  2. Elegir controlador de API: Seleccione "Controlador de API - Vacío" y proporcione un nombre para el controlador.

Agregando un controlador

  1. Definición de acciones: Implementar acciones dentro del controlador para manejar diferentes peticiones HTTP. Tim proporciona ejemplos de código que muestran cómo definir los métodos GET, POST, PUT y DELETE. Para ver el código detallado, consulte el vídeo a partir del minuto 26:25.

Esta demostración práctica ayuda a los desarrolladores a comprender cómo crear y configurar controladores de API para gestionar distintos tipos de solicitudes.

API REST

Tim Corey presenta REST (Representational State Transfer) y sus principios:

  1. Qué es REST: REST es un estilo arquitectónico para diseñar aplicaciones en red. Se basa en la comunicación sin estado y utiliza métodos HTTP estándar (GET, POST, PUT, DELETE) para realizar operaciones.

  2. Principios RESTful: Las API RESTful utilizan patrones de URL para representar recursos. Por ejemplo, /users recupera todos los usuarios, mientras que /users/5 recupera un usuario específico con ID 5.

  3. Cumplimiento de REST: Tim señala que lograr el pleno cumplimiento de REST puede ser un reto, ya que REST fue originalmente un modelo teórico. Sin embargo, la adhesión a los principios REST puede conducir a APIs más intuitivas y coherentes.

Tim hace hincapié en que, aunque el objetivo es el cumplimiento de REST, las consideraciones prácticas deben guiar el diseño de la API para garantizar la facilidad de uso y la funcionalidad.

Aplicación API mínima

Corey presenta Minimal APIs, un enfoque simplificado para el desarrollo de API en ASP.NET Core:

  1. Configuración de API mínimas: Tim muestra cómo crear un proyecto de API mínima desmarcando la opción "Usar controladores" al configurar el proyecto.

  2. Código simplificado: Las APIs mínimas eliminan la necesidad de controladores y atributos de enrutamiento, permitiendo a los desarrolladores definir puntos de extremo directamente en Program.cs usando métodos como app.MapGet(), app.MapPost(), etc.

  3. Ejemplo de código: Tim proporciona un ejemplo de código en el que una sola línea de código define un punto final. Demuestra cómo asignar una solicitud GET a un punto final con una configuración mínima.
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Hosting;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Hosting;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();

Las API mínimas están diseñadas para simplificar el desarrollo, especialmente para aplicaciones más pequeñas o microservicios.

Por qué la API mínima

Tim habla de las ventajas de las API mínimas:

  1. Crear nuevo proyecto: Tim crea un nuevo proyecto de API web pero esta vez en información adicional desmarca la opción usar controladores. Esto permite la creación de proyectos para utilizar APIs mínimas.

Creando API mínima

  1. Boilerplate reducido: Las API mínimas reducen la cantidad de código repetitivo al eliminar la necesidad de controladores y configuraciones de enrutamiento adicionales.

  2. Simplicidad: Ofrecen un enfoque más directo para API sencillas, lo que facilita la comprensión y el mantenimiento del código.

  3. Microservicios: Las API mínimas son especialmente útiles para microservicios, donde la API necesita realizar un conjunto limitado de acciones y no requiere el conjunto completo de funciones de los controladores tradicionales.

Tim reconoce que, si bien las API mínimas son beneficiosas para determinados escenarios, los controladores tradicionales podrían ser más apropiados para aplicaciones más grandes o complejas.

Bestes prácticas, resumen y observaciones finales

Tim Corey concluye su tutorial con las mejores prácticas para el desarrollo de API:

  1. Separación de responsabilidades: Evite colocar la lógica de negocio directamente en Program.cs o acciones de controlador. En su lugar, traslade la lógica a bibliotecas de clases o servicios independientes para mantener la limpieza del código y adherirse a los principios SOLID.

  2. API como interfaz de usuario: Trate las API como una interfaz de usuario, centrándose en que sean intuitivas y estén bien documentadas. Tim hace hincapié en la importancia de una documentación clara y un diseño eficaz de la API.

  3. Swagger y documentación: Utiliza Swagger para la documentación y el control de versiones de la API. Tim explica cómo pueden utilizarse los comentarios XML en el código para generar documentación detallada de la API.

  4. Consideraciones adicionales: Tenga en cuenta el almacenamiento en caché, la limitación de velocidad y otros factores para mejorar el rendimiento y la seguridad de la API.

Tim anima a los desarrolladores a explorar diferentes tipos de proyectos y herramientas, haciendo hincapié en el valor de la comprensión de las API y su papel en el desarrollo de software moderno.

Conclusión

El vídeo de Tim Corey ofrece una guía completa sobre la creación y gestión de API en ASP.NET Core, que abarca los enfoques RESTful y Minimal API. Sus ideas no sólo ayudan a los desarrolladores a comprender lo esencial del diseño de API, sino que también ofrecen consejos prácticos para aplicar soluciones eficaces.

Para obtener más información y tutoriales detallados sobre C# y otros tipos de proyectos, visita el canal de YouTube de Tim Corey, IAmTimCorey.

Hero Worlddot related to Creación de aplicaciones web en C# con ASP.NET Core
Hero Affiliate related to Creación de aplicaciones web en C# con ASP.NET Core

Gana más compartiendo lo que te gusta

¿Creas contenidos para desarrolladores que trabajan con .NET, C#, Java, Python o Node.js? ¡Convierte tu experiencia en un ingreso extra!

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame