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

Otras categorías

Curso sobre la adición de controles de salud: creación de una API de ejemplo en C#

Tim Corey
23m 30s

Desarrollar y probar API RESTful en C# utilizando ASP.NET Core es una habilidad práctica para cualquier desarrollador backend moderno. En su vídeo tutorial "Adding Health Checks - Building a Sample API in C# Course", Tim Corey explica cómo crear una API de ejemplo con comprobaciones de estado integradas. Este artículo, basado únicamente en la transcripción de Tim, explica todo el proceso paso a paso, cubriendo puntos clave como el uso de public async Task, int id, var app y otros métodos de solicitud HTTP.

Veamos con más detalle cómo Tim Corey configura las comprobaciones de estado en un proyecto de API de C# mediante Visual Studio Code.

Introducción a la API de muestra y comprobaciones de estado

Tim explica que una API de muestra es una herramienta poderosa a la hora de aprender desarrollo web. Permite a los desarrolladores simular llamadas a la API mediante los métodos GET, POST, PUT y DELETE, con los datos de solicitud y códigos de estado adecuados. La API que Tim crea es compatible:

  • Datos de muestra con un modelo de datos

  • Comportamientos RESTful para solicitudes API

  • Respuestas en formato JSON

  • Comprobaciones

  • Despliegue como contenedores Docker y aplicaciones web

Instalación del paquete Health Checks

Tim abre el proyecto en Visual Studio Code y hace clic con el botón derecho del ratón en Dependencias para gestionar los paquetes NuGet. Busca e instala el paquete AspNetCore.HealthChecks.UI.Client. Esto permite que la aplicación admita dos tipos de comprobaciones de estado.

Creación de clases de comprobación

Tim añade una nueva carpeta llamada HealthChecks dentro de la carpeta del proyecto API. Aquí crea varias clases que implementan la interfaz IHealthCheck, cada una de las cuales representa un estado diferente: saludable, degradado, no saludable y aleatorio.

ComprobaciónDeSalud.cs

Esta clase devuelve un HealthCheckResult.Healthy utilizando una implementación pública async Task:

return Task.FromResult(HealthCheckResult.Healthy("This is a test healthy service."));
return Task.FromResult(HealthCheckResult.Healthy("This is a test healthy service."));

Esto simula un estado saludable, útil para probar cómo su front-end maneja un servicio estable.

ComprobaciónDeSaludDegradada.cs

return Task.FromResult(HealthCheckResult.Degraded("This is a test degraded service."));
return Task.FromResult(HealthCheckResult.Degraded("This is a test degraded service."));

Esta comprobación devuelve una respuesta de servicio degradado. Es una forma sencilla de simular fallos parciales o problemas de rendimiento.

ComprobaciónSalud.cs

return Task.FromResult(HealthCheckResult.Unhealthy("This is a test unhealthy service."));
return Task.FromResult(HealthCheckResult.Unhealthy("This is a test unhealthy service."));

Esto imita un servicio fallido, simulando casos en los que se esperaría un código de estado HTTP 500 o el retorno NotFound().

Comprobación de salud aleatoria.cs

Esta comprobación de estado utiliza un número entero aleatorio para simular uno de los tres estados:

int randomResult = Random.Shared.Next(1, 4);
return randomResult switch
{
    1 => Task.FromResult(HealthCheckResult.Healthy("This is a test random service.")),
    2 => Task.FromResult(HealthCheckResult.Degraded("This is a test random service.")),
    3 => Task.FromResult(HealthCheckResult.Unhealthy("This is a test random service.")),
    _ => Task.FromResult(HealthCheckResult.Healthy("This is a test random service."))
};
int randomResult = Random.Shared.Next(1, 4);
return randomResult switch
{
    1 => Task.FromResult(HealthCheckResult.Healthy("This is a test random service.")),
    2 => Task.FromResult(HealthCheckResult.Degraded("This is a test random service.")),
    3 => Task.FromResult(HealthCheckResult.Unhealthy("This is a test random service.")),
    _ => Task.FromResult(HealthCheckResult.Healthy("This is a test random service."))
};

Tim subraya que esto es útil para probar el comportamiento en condiciones variables.

Registro de comprobaciones de estado en la configuración de inicio

Tim añade una nueva clase estática HealthChecksConfig.cs en la carpeta de inicio o configuración. Esta clase incluye dos métodos estáticos:

Agregar todos los controles de salud()

services.AddHealthChecks()
    .AddCheck<RandomHealthCheck>("random", tags: new[] { "random" })
    .AddCheck<HealthyHealthCheck>("healthy", tags: new[] { "healthy" })
    .AddCheck<DegradedHealthCheck>("degraded", tags: new[] { "degraded" })
    .AddCheck<UnhealthyHealthCheck>("unhealthy", tags: new[] { "unhealthy" });
services.AddHealthChecks()
    .AddCheck<RandomHealthCheck>("random", tags: new[] { "random" })
    .AddCheck<HealthyHealthCheck>("healthy", tags: new[] { "healthy" })
    .AddCheck<DegradedHealthCheck>("degraded", tags: new[] { "degraded" })
    .AddCheck<UnhealthyHealthCheck>("unhealthy", tags: new[] { "unhealthy" });

Registra todos los controles de salud para la inyección de dependencias en el contenedor de servicios de ASP.NET Core.

Mapa de todos los controles de salud()

app.MapHealthChecks("/health");
app.MapHealthChecks("/health");

Esto crea un único punto final /health que evalúa todos los servicios juntos. Si alguno no es saludable, la comprobación completa devuelve no saludable.

Creación de puntos finales de salud específicos

Para probar componentes individuales, Tim asigna cada comprobación de estado por etiqueta:

app.MapHealthChecks("/health/healthy", new HealthCheckOptions {
    Predicate = x => x.Tags.Contains("healthy")
});
app.MapHealthChecks("/health/healthy", new HealthCheckOptions {
    Predicate = x => x.Tags.Contains("healthy")
});

Repite esto para /health/degraded, /health/unhealthy y /health/random. Cada una de ellas permite a los desarrolladores probar comportamientos específicos y cómo reacciona su frontend ante ellos.

Al visitar /health/random, la salida cambia entre "saludable", "degradado" y "no saludable" en función del resultado aleatorio.

Añadir soporte de interfaz de usuario para comprobaciones de salud

Tim mejora los puntos finales habilitando una respuesta de interfaz de usuario para cada ruta de comprobación de estado. Esto proporciona una salida JSON:

app.MapHealthChecks("/healthui", new HealthCheckOptions
{
    ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
});
app.MapHealthChecks("/healthui", new HealthCheckOptions
{
    ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
});

Esto permite inspeccionar cada comprobación de estado con datos como duración, etiquetas y estado. A continuación, Tim crea versiones de la interfaz de usuario para cada punto final de salud:

  • /healthui/saludable

  • /healthui/degradado

  • /healthui/insalubre

  • /healthui/aleatorio

Cada una responde con un formato JSON detallado, ideal para API RESTful y pruebas desde dispositivos móviles o páginas web.

Conclusión del proyecto API

Tim destaca que, incluso con estas características, Program.cs solo tiene 21 líneas. Él lo atribuye a:

  • Buena estructura de carpetas de proyectos

  • Mantener los modelos en la carpeta Models

  • Colocación de puntos finales y controladores en sus propias carpetas

  • Uso de métodos async Task para cada clase de comprobación de estado

También hace hincapié en la utilidad de esta API de muestra en entornos de producción para simular latencia o fallos antes de su despliegue.

Podemos hacer muchas más pruebas con esta API, además de hacer llamadas GET", concluye Tim.

Qué viene a continuación

Tim adelanta la próxima lección, en la que añadirá ralentizaciones simuladas (por ejemplo, retrasos de 5 segundos) y errores como return NotFound() o return BadRequest() para comprobar aún más el comportamiento de la API.

Conclusión

En este tutorial vídeo, Tim Corey recorre metódicamente la creación de una API mínima con comprobaciones de estado integradas mediante ASP.NET Core. Los componentes clave incluyen:

  • Clases de comprobación de estado (sano, degradado, no sano, aleatorio)

  • Inyección de dependencia mediante AddHealthChecks()

  • Asignación de puntos finales mediante MapHealthChecks()

  • Soporte de respuestas JSON estructuradas

Este enfoque facilita la validación de las API REST, la simulación de fallos y el refuerzo de las aplicaciones web tanto para entornos de desarrollo como de producción.

Hero Worlddot related to Curso sobre la adición de controles de salud: creación de una API de ejemplo en C#
Hero Affiliate related to Curso sobre la adición de controles de salud: creación de una API de ejemplo en C#

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