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

Otras categorías

Validación de Datos para API Minimal en .NET 10: Exploración Profunda con Tim Corey

Tim Corey
10m 28s

La validación de datos es un aspecto crítico del desarrollo de API. Sin una validación adecuada, las aplicaciones de software corren el riesgo de aceptar datos mal formados, datos maliciosos o solicitudes inválidas, lo que puede llevar a la corrupción de datos, vulnerabilidades de seguridad como inyección SQL, scripts entre sitios e incluso desbordamientos de búfer. Asegurar que una solicitud entrante esté bien formada, contenga el formato esperado y respete los tipos de datos definidos en tu backend es clave para la integridad de los datos, el manejo robusto de errores y la confianza del desarrollador.

En su video "Cambios en la Validación de Datos para APIs Minimalistas en .NET 10", Tim Corey recorre las mejoras de validación de API en APIs Minimalistas, demostrando cómo los desarrolladores pueden aplicar validación exhaustiva tanto en clases como en registros. Tim explica no solo cómo prevenir datos inválidos, sino también cómo reducir la duplicación de código, simplificar la lógica de validación y devolver códigos de estado HTTP adecuados cuando la validación falla. Sigamos el recorrido de Tim para obtener una comprensión más profunda de la validación de datos en APIs Minimalistas.

Introducción a la Validación de APIs Minimalistas

Tim Corey comienza destacando que las APIs Minimalistas en .NET 10 recibieron múltiples mejoras, siendo la validación de solicitudes una de las mejoras clave. Esto permite que las solicitudes entrantes, ya sea a través de la cadena de consulta, encabezados o cuerpo de la solicitud, se validen automáticamente. Tim enfatiza que una validación adecuada no solo mejora la experiencia del desarrollador sino que también impide que solicitudes mal formadas lleguen a la lógica de negocio, lo cual es esencial para mantener la integridad de los datos y proteger la información sensible.

Tim también señala que su video es parte de una serie de entrenamiento rápido de 10 minutos, destinada a proporcionar orientación práctica sin profundizar demasiado en teoría abstracta. Anima a los espectadores a descargar su código fuente para seguirlo.

Configurando un API Minimalista para Validación

Para demostrar las reglas de validación, Tim configura una API minimalista desde un nuevo proyecto de archivo, simplificándola para enfocarse en la validación de API. Su API de ejemplo incluye:

  • Un endpoint Hello World para probar la conectividad.

  • Un endpoint de solicitud POST /person que acepta un objeto Person.

  • Un endpoint de solicitud POST /login para un registro de Login.

Tim ejecuta la API y muestra que inicialmente se aceptan datos mal formados. Por ejemplo, enviar un objeto Person en blanco o un correo electrónico inválido en el registro Login aún resulta en una respuesta API exitosa. Esto demuestra la necesidad de validación de esquema y validación de solicitudes para prevenir que datos inválidos se procesen en el backend.

Agregando Servicios de Validación a APIs Minimalistas

Tim explica que el primer paso para implementar una validación adecuada es registrar servicios de validación en la API:

builder.Services.AddValidation();

Al agregar este servicio, los controladores de rutas realizan automáticamente la verificación de tipo, validación de formato y validación de contenido en las solicitudes entrantes. Tim señala que este paso es esencial para asegurar que los fallos de validación generen mensajes de error en lugar de permitir que datos maliciosos pasen por el sistema.

Validando Clases: Ejemplo con el Modelo Person

Tim añade atributos de validación a la clase Person usando System.ComponentModel.DataAnnotations. Marca las propiedades como requeridas y aplica validación de formato con restricciones de longitud mínima:

[Required]
[MinLength(2)]
public string FirstName { get; set; }

[Required]
[MinLength(2)]
public string LastName { get; set; }

Ejecutando la API ahora se desencadenan errores de validación si el cuerpo de la solicitud omite campos requeridos o contiene datos mal formados. Por ejemplo, enviar un LastName de un solo carácter produce un 400 Bad Request con un mensaje de error detallado:

"El campo LastName debe ser un tipo de cadena o matriz con una longitud mínima de 2."

Tim destaca que usar bibliotecas de validación como esta reduce la duplicación de código y permite a los desarrolladores enfocarse en la lógica de negocio en lugar de escribir lógica de validación repetitiva en cada controlador de ruta.

Validando Registros: Ejemplo con Registro Login

Validar registros difiere ligeramente porque sus propiedades se definen en el constructor. Tim demuestra cómo aplicar reglas de validación en registros usando la sintaxis [property:]:

public record Login(
    [property: Required, EmailAddress] string Email,
    [property: Required, MinLength(10)] string Password,
    [property: Compare(nameof(Password))] string ConfirmPassword
);

Puntos clave que explica Tim:

  • La validación de email asegura que el campo Email siga el formato correcto.

  • La longitud mínima en la contraseña protege contra solicitudes mal formadas o contraseñas débiles.

  • [Compare(nameof(Password))] asegura que ConfirmPassword coincida con la Password original, evitando la corrupción de datos o fallos de validación en objetos anidados.

Tim ejecuta la solicitud post para el endpoint de login y demuestra que formatos de email inválidos, contraseñas cortas o contraseñas de confirmación no coincidentes desencadenan errores de validación automáticamente. Una vez que los campos cumplen con el formato esperado, la respuesta de la API tiene éxito.

Errores a Evitar: La Accesibilidad Importa

Tim señala un error sutil: la validación falla silenciosamente si las clases o registros no son públicos. Incluso si la solicitud API se enlaza con éxito al objeto, los resultados de validación no se aplicarán:

internal record Login(...); // La validación no se ejecutará

Explica que, aunque los datos maliciosos o la entrada inválida pueden seguir poblando objetos, la estrategia de validación se pasa por alto. Este comportamiento está documentado en ASP.NET Core, pero Visual Studio no advierte a los desarrolladores, por lo que es crucial revisar regularmente las reglas de validación y asegurar que todos los modelos de API sean públicos.

Ventajas de Usar Validación en APIs Minimalistas

Tim concluye resumiendo los beneficios de la validación de datos de API en APIs Minimalistas:

  1. Elimina la lógica de validación manual: No hay necesidad de escribir comprobaciones repetitivas para cada propiedad.

  2. Asegura la integridad de los datos: Previene que solicitudes mal formadas corrompan el backend o objetos anidados.

  3. Mejora la seguridad: Reduce la exposición a datos maliciosos, inyección SQL, scripts entre sitios y otras vulnerabilidades de seguridad.

  4. Proporciona mensajes de error claros: Devuelve fallos de validación con mensajes de error y códigos de estado HTTP adecuados (como 400 Bad Request).

  5. Mejora la experiencia del desarrollador: Una validación limpia y declarativa reduce la duplicación de código y mejora la confianza en las respuestas API.

  6. Soporta validación exhaustiva: Funciona en el cuerpo de las solicitudes, cadenas de consulta, encabezados y objetos anidados automáticamente.

Siguiendo el enfoque de Tim, los desarrolladores pueden implementar una validación exhaustiva sin escribir métodos de validador personalizados o repetir la lógica de validación a través de múltiples endpoints.

Conclusión

El video de Tim Corey proporciona una guía práctica y paso a paso para implementar la validación de API en APIs Minimalistas con .NET 10. Desde agregar servicios de validación hasta decorar clases y registros con atributos, y entender posibles fallos, Tim demuestra cómo aplicar efectivamente la integridad de los datos, la validación de formato y el manejo de errores.

Una validación adecuada de datos de API asegura que tu REST API solo procese solicitudes bien formadas, reduciendo los riesgos de datos maliciosos, inyección SQL, scripts entre sitios y otras vulnerabilidades de seguridad. Usar reglas de validación, validación de esquemas y una estrategia de validación adecuada fortalece la confianza del desarrollador mientras mantiene un backend limpio y seguro.

Siguiendo la orientación de Tim, los desarrolladores pueden implementar una canalización de validación robusta, segura y confiable, asegurando que cada solicitud post, cada objeto y cada solicitud de API se adhiera a los formatos esperados, protegiendo tanto al backend como al usuario final.

Hero Worlddot related to Validación de Datos para API Minimal en .NET 10: Exploración Profunda con Tim Corey
Hero Affiliate related to Validación de Datos para API Minimal en .NET 10: Exploración Profunda con Tim Corey

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