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

Otras categorías

Datos de muestra y filtrado - Creación de una API de muestra en C#

Tim Corey
42m 43s

Hoy en día, cuando se trabaja con desarrollo web, una herramienta importante es una API web de muestra, algo que se puede utilizar para probar aplicaciones web frontales, dispositivos móviles o incluso aplicaciones de software. En su detallado vídeo sobre "Datos de muestra y filtrado - Creación de una API de muestra en C#", Tim Corey nos guía a través de la creación de una API web en C# que carga datos de muestra desde un archivo JSON, configura el filtrado y está preparada para su despliegue como un contenedor Docker o una aplicación web tradicional.

En este artículo, exploraremos el enfoque de Tim paso a paso y explicaremos los conceptos básicos de la API web de .NET Core, las API mínimas y los servicios HTTP.

Introducción a la API web de ejemplo

Tim comienza explicando por qué es tan importante para los desarrolladores crear un nuevo proyecto de API web. Tanto si está creando para dispositivos móviles, una aplicación web u otras aplicaciones de software, disponer de una API de muestra ligera hace que las pruebas sean más rápidas y fluidas.

Tim afirma que, al final del proyecto, tendremos:

  • Una API mínima que utiliza ASP.NET Core y .NET Core,

  • Una API documentada compatible con OpenAPI (Swagger UI),

  • Comprobaciones,

  • Simulación de errores y ralentizaciones,

  • Despliegue en un contenedor Docker y en un servidor VPS.

Este pequeño proyecto permitirá a los desarrolladores interactuar fácilmente con servicios HTTP, a través de métodos HTTP como GET, PUT, POST y DELETE.

Configuración del proyecto y datos de muestra

Tim comienza estructurando el proyecto de API web dentro de Visual Studio, el popular entorno de desarrollo integrado de Microsoft.

En el minuto 1:07, Tim crea una nueva carpeta Data y añade un archivo courseData.json. Él menciona que su sitio en vivo, timcorey.com, utiliza un sistema similar - sólo un gran archivo JSON detrás de las escenas, actuando como un servicio web.

Puntos clave de la configuración de Tim:

  • Utilice archivos JSON para los datos de muestra para evitar que se requiera una base de datos o Entity Framework.

  • Mantenga los contenedores pequeños evitando servicios adicionales como servidores SQL.

  • Los datos no son mutables: no es necesario almacenar los cambios; sólo hay que reajustar los datos cuando sea necesario.

Esta elección refleja los principios REST (Representational State Transfer) de trabajo con recursos existentes.

Comprensión de la estructura de datos del curso

Tim recorre cuidadosamente la estructura del archivo JSON de muestra:

  • ID (número entero),

  • Prepedido (booleano),

  • URL del curso (cadena),

  • Tipo de curso (cadena),

  • Nombre, número de lecciones, duración del curso en horas (números),

  • Descripción, URL de la imagen,

  • Precio en USD,

  • Enlace de previsualización.

Tim explica en el minuto 3:29 que todos los precios se basan en dólares estadounidenses; sin embargo, los impuestos locales (IVA) podrían alterar el precio final.

Posteriormente, cada uno de estos campos se asigna a una clase modelo en C#, un elemento fundamental en la creación de API web ASP.NET.

Creación de la clase modelo del curso

Pasando a la codificación .NET Core, Tim crea un archivo CourseModel.cs dentro de una nueva carpeta Models.

En el minuto 4:47, utiliza "Pegado especial > Pegar JSON como clases" de Visual Studio para crear instantáneamente una clase basada en la estructura JSON. Tim señala:

  • Nomenclatura PascalCase correcta (importante para las API web de C#),

  • Cadenas obligatorias frente a cadenas anulables (6:02),

  • Evitar el almacenamiento de null donde una cadena vacía sería suficiente.

La creación de una clase modelo sólida es crucial para permitir la comunicación de datos entre los clientes y el servidor.

Carga de datos en la memoria

Tim continúa creando una clase CourseData.cs para gestionar la carga de la lista de cursos en la memoria.

Pasos clave:

  • Utilice System.Text.Json para la deserialización,

  • Establezca PropertyNameCaseInsensitive = true (8:04) para asignar campos JSON en camelCase a campos C# en PascalCase,

  • Utilice Path.Combine (9:04) para acceder a archivos entre plataformas,

  • Asegúrese de distinguir entre mayúsculas y minúsculas cuando trabaje con servidores Linux (9:59).

Los cursos se cargan en una propiedad pública List, lo que garantiza un acceso rápido sin tener que consultar repetidamente una base de datos.

Tim, a las 11:04, subraya que si la deserialización falla, se crea una nueva lista vacía para evitar errores de referencia nula, una buena práctica a la hora de crear API sólidas.

Registro de los datos del curso en inyección de dependencias

A continuación, Tim muestra cómo registrar la clase CourseData utilizando AddTransient en el contenedor de servicios.

Explica que, aunque los datos son de solo lectura, el uso de un servicio transitorio evita problemas de modificación accidental. Este enfoque se ajusta a las normas modernas de desarrollo de API web ASP.NET Core.

Creación de puntos finales del curso

A las 14:03, Tim comienza a crear puntos finales para la API de ejemplo:

  • Un método GET en /courses para recuperar todos los cursos,

  • Un método de extensión AddCourseEndpoints para un código más limpio.

Este enfoque modular simplifica el escalado de su proyecto de API web, una técnica esencial cuando se gestionan grandes servicios HTTP o múltiples puntos finales.

Building A Sample Api In Csharp 1 related to Creación de puntos finales del curso

Tim también establece la URL de lanzamiento en Swagger UI, lo que facilita las pruebas.

Solución de problemas: Desajustes de tipos de datos

Al probar el nuevo punto final, Tim encuentra un error de código de estado relacionado con el campo CourseLengthInHours. Se da cuenta de que algunos cursos tienen horas fraccionarias (como 2,5), lo que requiere un double en lugar de un int.

Tim corrige el CourseModel, demostrando el valor de la comprobación minuciosa de errores y el respeto de los tipos de datos al consumir recursos web externos.

Mejorando la API con ID Lookup

Tim amplía la funcionalidad:

  • LoadAllCourses para recuperar todos los cursos,

  • LoadCourseById para encontrar un curso por ID.

Mejora la gestión de errores comprobando si existe un curso. Si no es así, Tim utiliza return NotFound(), que devuelve al cliente un código de estado HTTP apropiado.

Esto coincide con las prácticas de estilo arquitectónico RESTful, donde cada método HTTP comunica claramente el resultado de la operación.

Añadir filtrado por tipo de curso y búsqueda

Un simple método GET no es suficiente: los servicios web reales necesitan capacidades de filtrado.

Tim mejora LoadAllCourses para que acepte parámetros de consulta:

  • courseType (cadena),

  • búsqueda (cadena).

Explica cómo manejar con seguridad parámetros opcionales utilizando String.IsNullOrWhiteSpace.

El filtrado por courseType utiliza RemoveAll con String.Compare, ignorando las diferencias entre mayúsculas y minúsculas. Para buscar el nombre del curso y la descripción breve se utiliza .Contains con una comparación que no distingue entre mayúsculas y minúsculas.

Tim prueba escenarios como:

  • Filtrado para "Curso magistral"

  • Búsqueda de "web" o "SQL

  • Combinación de búsqueda y tipo de curso para obtener resultados más precisos

Esto proporciona una experiencia totalmente interactiva para los usuarios a través de aplicaciones web, aplicaciones móviles o clientes que se comunican a través de HTTP. Para obtener información más detallada, consulte el vídeo completo.

Pensamientos finales y próximos pasos

Al final de la lección, Tim ha creado:

  • Una API web ASP.NET Core en funcionamiento,

  • Funciones de filtrado y búsqueda,

  • Tratamiento adecuado de errores (NotFound, Ok, etc.),

  • Soporte para Swagger UI y documentación OpenAPI.

Tim adelanta que, a continuación, se ocupará de la Compartición de Recursos entre Orígenes (CORS), fundamental para que los clientes de Internet y los distintos dominios puedan acceder libremente a la API.

Tim concluye con un mensaje de ánimo: la programación a veces conlleva obstáculos, pero es gratificante.

Conclusión

Siguiendo el vídeo de Tim Corey, podrá crear un nuevo proyecto de API web en Visual Studio, cargar datos de muestra, crear puntos finales e implementar un potente filtrado, todo ello basado en los principios RESTful y los estándares ASP.NET Core.

Ya se trate de probar páginas web, crear API para dispositivos móviles o trabajar con recursos existentes, esta configuración garantiza un acceso rápido y fiable a los datos a través de métodos HTTP.

Sigue practicando estos patrones en .NET Core y pronto estarás creando servicios web robustos que se comunican sin problemas entre clientes, servidores e Internet

Hero Worlddot related to Datos de muestra y filtrado - Creación de una API de muestra en C#
Hero Affiliate related to Datos de muestra y filtrado - Creación de una API de muestra 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