Comienza a crear una API para el consumo de datos del clima con C# y .NET con este tutorial en el que revisaremos las generalidades de este entorno de trabajo.
¿Qué es .NET?
.NET es una plataforma altamente utilizada en la industria de desarrollo de software, permitiéndonos crear aplicaciones utilizando diversos lenguajes de programación y los que sobresalen son: C# y F#.
Además, dotnet permite crear aplicaciones donde podemos destacar el desarrollo de apps para Windows, aplicaciones móviles con Xamarin y aplicaciones web utilizando ASP.NET.
Uno de los usos más comunes y populares es el de la creación de API (application programming interface) que permite la comunicación entre aplicaciones cliente (por ejemplo, una aplicación de escritorio o web), y el servidor. Esto genera una capa de abstracción entre lo que ve el cliente y los recursos que tiene la aplicación en el servidor, incluyendo los datos y la información sensible.
Pasos para crear tu primera API en .NET desde cero
Para crear una API en .NET lo único que necesitamos como prerrequisito es tener instalado el SDK. Para descargar el SDK simplemente dirígete a la página oficial de .NET de Microsoft y selecciona la última versión LTS (Long term support, la versión más estable y con soporte extendido).
Luego de instalar el SDK tendremos acceso al dotnet CLI (command line interface) y con esta herramienta a través de un comando podemos generar la plantilla base para nuestra API.
Navegamos a una carpeta vacía dentro de nuestro sistema de archivos dónde queremos crear nuestra API y luego utilizamos el comando dotnet new webapi
para crearla:
Figura 1 - Ejecución de comandos para crear una API en una nueva carpeta
Puedes abrir el proyecto utilizando tu editor favorito. .NET es compatible con todos los que existen en el mercado, solo debes usar la terminal para ejecutar los comandos relacionados con el proyecto.
La estructura de un proyecto WEB con .NET o ASP.NET utiliza el patrón MVC (Model-View-Controller) para organizar los diferentes componentes del proyecto. El patrón MVC distribuye las responsabilidades que existen en una aplicación con una estructura donde se separa la lógica, los datos y la vista.
El modelo contiene la estructura necesaria para guardar los datos, la vista se encarga de interactuar con el usuario y exponer la interfaz, y el controlador es el encargado de procesar cada una de las peticiones o acciones ejecutadas por el usuario en la vista.
En el caso de una API la vista es excluida, es decir, solo se tiene el controlador y el modelo como a la vista solo se incluye cuando creamos aplicaciones web completas con interfaz.
1. Crea la API a partir de la plantilla base
La plantilla base contiene un ejemplo básico que nos va a permitir entender cómo funciona una API, veremos que los métodos para exponer deben ser manejados por un controlador y que existen diferentes atributos para poder especificar el detalle de estos. Este es el ejemplo de WeatherForecastController.cs:
using Microsoft.AspNetCore.Mvc;
namespace MyDotnetAPI.Controllers;
[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(Name = "GetWeatherForecast")]
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();
}
}
2. Especifica el controlador para el mapeo de los endpoints
La etiqueta [ApiController]
permite especificar la clase como un controlador para que sea incluido al momento de hacer el mapeo de todos los endpoints o rutas que va a exponer la API.
La etiqueta [Route]
nos permite especificar la ruta para acceder al controlador y a la acción que se ejecutará, en este caso vemos que tiene el valor [controller]
lo que significa que la ruta tomaría de manera dinámica el nombre de la clase del controlador. Sin embargo, podemos usar una cadena fija como nombre, por ejemplo “MiControlador” el resultado sería: [Route(“MiControlador”)]
.
Finalmente, para la acción simplemente creamos un método con un nombre descriptivo que en este ejemplo seria Get()
y utilizamos el atributo del método o verbo HTTP que necesitamos implementar, por ejemplo:
• [HttpGet]
: Para GET
• [HttpPost]
: Para POST
• [HttpPut]
: Para PUT
• [HttpDelete
: Para Delete
En el método Get de weatherforecast.cs
vemos también la especificación de la propiedad “Name” en el método que nos permite especificar un nombre para la documentación del proyecto, esto no afecta el sistema de rutas de la API:
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
3. Prueba ejecutando el proyecto con dotnet run
Podemos ejecutar el Proyecto y probar este demo que viene por defecto utilizando el comando dotnet run
en la terminal:
Figura 2 - Ejecución de una API .NET usando el comando dotnet run
Cada nueva webapi creada con .NET se le asigna un puerto aleatorio, en este caso tenemos el puerto 7297 para https y 5186 para http.
La ruta como hemos analizado sería [nombre del controlador]/[nombre acción]
, la acción que representa el método Get no tiene el atributo Route, entonces se toma como base solo la ruta del controlador y el método o verbo http, para nuestro caso entonces sería:
/WeatherForecast
Y si incluimos la ruta base:
https://localhost:7297/WeatherForecast
Al ser un método GET podemos hacer el llamado usando el navegador, simplemente colocando la ruta y vemos el resultado:
Figura 3 – resultado al invocar el controlador de ejemplo weatherforecast
Hemos analizado cada uno de los aspectos para configuración de una API en .NET desde su creación, entiendo la manera en que usa el patrón modelo-vista-controlador y los atributos para configurar cada controlador y acción.
Microsoft tiene una documentación detallada que podemos seguir para utilizar las mejores prácticas en la implementación de nuestra API.
Para que puedas aprender más sobre la creación de API con .NET toma el Curso de APIs con .NET.
Curso de APIs con .NET