Creación y configuración de rutas en ASP.NET Core

Estrada Web Group
Estrada Web Group
Creación y configuración de rutas en ASP.NET Core

Resumen: En este artículo aprenderás los fundamentos de las rutas en ASP.NET Core, incluyendo su sintaxis básica, cómo crear rutas simples, rutas con parámetros, restricciones de ruta, rutas con múltiples parámetros, rutas con valores opcionales y rutas con prefijos y subdominios. Al final del artículo, tendrás una comprensión sólida de cómo funcionan las rutas en ASP.NET Core y cómo puedes utilizarlas para construir aplicaciones web robustas y escalables.

Introducción

La creación y configuración de rutas es una parte fundamental en la construcción de aplicaciones web en ASP.NET Core. Las rutas permiten a los usuarios acceder a diferentes secciones de nuestra aplicación, y en consecuencia, es importante saber cómo definirlas y configurarlas adecuadamente.

En este artículo, te mostrare cómo crear y configurar rutas en ASP.NET Core. Aprenderás sobre los conceptos básicos de enrutamiento, cómo definir y configurar rutas, y cómo trabajar con parámetros dinámicos para crear rutas personalizadas para tu aplicación. ¡Comencemos!

Fundamentos de rutas en ASP.NET Core

En una aplicación ASP.NET Core, las rutas son la forma en que se define la forma en que se procesan las solicitudes de los usuarios. Las rutas definen cómo se construye la URL de la aplicación y cómo se mapea a un controlador y una acción específicos. Entender cómo funcionan las rutas en ASP.NET Core es fundamental para construir aplicaciones web escalables y fáciles de mantener.

Las rutas en ASP.NET Core son una forma de mapear las solicitudes HTTP a acciones en el controlador de una aplicación. Básicamente, una ruta es una URL que se define en el archivo de configuración de rutas y que se corresponde con una acción específica en un controlador. Cuando una solicitud HTTP llega a la aplicación, el sistema de enrutamiento de ASP.NET Core analiza la URL y busca la ruta correspondiente en la configuración de rutas. Si se encuentra una coincidencia, la solicitud se envía a la acción correspondiente en el controlador para que se procese. De esta manera, las rutas permiten que las solicitudes HTTP se dirijan a la funcionalidad adecuada de la aplicación.

Sintaxis básica

La sintaxis básica de una ruta en ASP.NET Core es la siguiente:

endpoints.Map[VerboHTTP]("ruta", async context => {
    // código que se ejecuta al acceder a la ruta
});

Donde [VerboHTTP] es el verbo HTTP que se usará para acceder a la ruta (por ejemplo, Get, Post, Put, Delete, entre otros), "ruta" es la dirección que se utilizará para acceder a la ruta y async context => { // código } es una función lambda que se ejecutará cuando se acceda a la ruta.

Componentes de una ruta en ASP.NET Core

Los componentes de una ruta son los siguientes:

  • Verbo HTTP: Es el método HTTP utilizado para acceder a la ruta. Los verbos HTTP comunes son GET, POST, PUT, DELETE, PATCH, entre otros.
  • Ruta base: Es la dirección principal de la aplicación, puede ser un dominio, un subdominio o una subcarpeta.
  • Segmentos de ruta: Son las partes que conforman la dirección de la ruta. Cada segmento está separado por una barra /.
  • Parámetros de ruta: Son valores que se pueden pasar en la URL de la ruta para personalizar la respuesta. Están representados por una cadena encerrada entre llaves {} en la ruta.
  • Restricciones de ruta: Son reglas que se pueden agregar a los parámetros de ruta para definir cómo se deben validar los valores que se pasan en ellos. Las restricciones se agregan después del nombre del parámetro, separadas por dos puntos :. Por ejemplo: {id:int} indica que el parámetro id debe ser un número entero.
  • Query string: Es una cadena que se agrega a la URL después del signo de interrogación ? y que contiene pares de valores y claves que se usan para personalizar la respuesta. Cada par está separado por el signo &, y cada clave y valor están separados por el signo =.
  • Atributos de ruta: Son anotaciones que se pueden agregar a los métodos de los controladores para definir sus rutas de forma explícita.

Creación de rutas simples

Para crear una ruta simple en ASP.NET Core, debes agregar una ruta al mapa de rutas. El mapa de rutas es un objeto que mantiene un registro de todas las rutas disponibles en la aplicación.
Puedes agregar una ruta simple usando el método MapRoute en el archivo Program.cs:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

En este ejemplo, estamos agregando una ruta por defecto, que redirige a la acción Index del controlador Home. La ruta tiene tres partes:

  • {controller}: especifica el nombre del controlador
  • {action}: especifica el nombre de la acción dentro del controlador
  • {id?}: es un parámetro opcional

Cuando se hace una solicitud a la aplicación con una URL que coincide con la ruta, ASP.NET Core la manejará y la enviará al controlador y a la acción especificados.

Podemos cambiar la ruta por defecto para que apunte a cualquier otro controlador y acción que deseemos. Por ejemplo, si deseamos que la ruta por defecto apunte a un controlador llamado MyController y a una acción llamada MyAction, podemos cambiar la ruta por defecto a la siguiente:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=My}/{action= MyAction}/{id?}");
});

En este ejemplo, la ruta por defecto se ha cambiado para apuntar al controlador MyController y a la acción MyAction.

Rutas con parámetros

En el mapa de rutas, se puede configurar una ruta con parámetros agregando una sección de llaves {} al valor de la ruta en el patrón de URL. El contenido dentro de las llaves representa el nombre del parámetro, que se puede usar más tarde para obtener los valores de la solicitud.

Por ejemplo, la siguiente ruta capturaría el valor id como un parámetro y lo pasaría a un controlador:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller}/{action}/{id?}");
});

En este ejemplo, el parámetro se llama id, es opcional y se puede acceder en un controlador a través de un parámetro con el mismo nombre. Si el valor de id no se proporciona en la URL, se asume el valor null. Si el valor se proporciona en la URL, el valor se pasará al controlador como un parámetro.

Por ejemplo, si la URL es /productos/detalles/10, el valor 10 se captura como un valor para el parámetro id y se puede acceder dentro del controlador como public IActionResult Detalles(int id).

Restricciones de ruta

Las restricciones de ruta son un mecanismo para controlar qué valores son aceptables para un parámetro en una ruta. Esto se logra mediante el uso de expresiones regulares que se aplican a los valores de los parámetros en la ruta.

En ASP.NET Core, las restricciones de ruta se pueden especificar en la definición de ruta utilizando la sintaxis "{parametro:restriccion}", donde "parametro" es el nombre del parámetro y "restriccion" es la expresión regular que se utilizará para validar el valor del parámetro.

Por ejemplo, supongamos que deseas tener una ruta que solo acepte valores numéricos para un parámetro llamado "id". Puedes definir esta ruta de la siguiente manera:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "producto",
        pattern: "producto/{id:int}",
        defaults: new { controller = "Producto", action = "Detalle" });
});

En este caso, la restricción ":int" especifica que el valor del parámetro "id" debe ser un número entero. Si se proporciona un valor no numérico para "id", la ruta no se encontrará y se devolverá un error 404.

Las restricciones de ruta también se pueden utilizar para validar otros tipos de valores de parámetros, como cadenas, fechas, etc. En general, son una herramienta útil para garantizar que los valores de los parámetros en una ruta sean válidos y evitar errores en tiempo de ejecución.

Rutas con múltiples parámetros

Para configurar una ruta con múltiples parámetros en el mapa de rutas, se puede hacer de la siguiente manera:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}/{name?}");
});

En este ejemplo, se define una ruta que espera dos parámetros opcionales: id y name. La ruta se compone de cuatro segmentos separados por diagonales (/): {controller}/{action}/{id?}/{name?}. Si los dos últimos parámetros no se proporcionan, la ruta aún puede coincidir con una URL si los dos primeros se proporcionan.

Cada segmento de la ruta se define dentro de llaves {} y corresponde a un parámetro en el controlador que se llamará de la misma manera. Por ejemplo, si la ruta es "{controller}/{action}/{id?}/{name?}", los parámetros correspondientes en el controlador serían controller, action, id y name.

public IActionResult MyAction(int id, string name)
{
    // código de acción aquí
}

La acción se llama "MyAction" y toma dos parámetros: "id" de tipo entero y "name" de tipo cadena. Dentro del cuerpo de la acción, se puede agregar el código que se ejecutará para manejar la solicitud con los parámetros recibidos.

Rutas con valores opcionales

En ASP.NET Core, las rutas pueden tener valores opcionales, lo que significa que el parámetro correspondiente a la ruta puede o no estar presente en la URL. Esto puede ser útil para proporcionar una funcionalidad adicional a los usuarios o para hacer que las rutas sean más fáciles de leer.
Para definir una ruta con valores opcionales, se puede utilizar un signo de interrogación para indicar que el valor es opcional. Por ejemplo:

routes.MapRoute(
    name: "opcional",
    template: "{controller}/{action}/{id?}"
);

En este ejemplo, la ruta incluye un parámetro "id", que es opcional. Si el valor "id" está presente en la URL, será utilizado por la ruta. Si el valor "id" no está presente, la ruta aún será válida y se ejecutará correctamente.

Es importante tener en cuenta que las rutas con valores opcionales deben definirse al final del mapa de rutas, después de las rutas con valores obligatorios. De lo contrario, el mapa de rutas puede ser ambiguo y no saber a qué ruta se está haciendo referencia.

Rutas con prefijos y subdominios

Para configurar una ruta con prefijo o subdominio, se utiliza el método Map del objeto endpoints. Se puede especificar el prefijo o subdominio en la ruta usando una cadena como prefijo o subdominio, seguida de una barra diagonal y la ruta.

Por ejemplo, si se quieres agregar un prefijo "admin" a la ruta "users", la ruta resultante sería "/admin/users". El siguiente código muestra cómo se puede configurar una ruta con prefijo en el mapa de rutas:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "admin",
        pattern: "admin/{controller=Home}/{action=Index}/{id?}");
});

En este caso, el prefijo "admin" se especifica en la ruta de patrón, y se utiliza la convención de nomenclatura para especificar el controlador y la acción por defecto.

Para configurar una ruta con subdominio, se puede usar el método Map con el parámetro host en lugar de pattern. Por ejemplo, si se desea utilizar un subdominio "admin" para la ruta "users", se puede utilizar el siguiente código:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "admin",
        pattern: "{controller=Home}/{action=Index}/{id?}",
        defaults: null,
        constraints: null,
        dataTokens: new { host = "admin.example.com" });
});

En este caso, se especifica el subdominio "admin.example.com" en la propiedad host de dataTokens. Esto asegura que la ruta se aplique sólo cuando se accede a través de ese subdominio.

Conclusión

En conclusión, las rutas son una parte fundamental de cualquier aplicación web, y ASP.NET Core ofrece una gran cantidad de opciones y flexibilidad a la hora de configurarlas. En este artículo hemos visto la sintaxis básica de las rutas, cómo crear rutas simples y con parámetros, cómo restringir los valores de los parámetros, y cómo añadir prefijos y subdominios a las rutas. Con esta información, deberías ser capaz de configurar tus propias rutas en tu aplicación ASP.NET Core. Recuerda que las rutas son una parte importante de la experiencia del usuario, así que dedica tiempo a pensar en cómo quieres estructurar tus rutas y cómo quieres que tus usuarios interactúen con tu aplicación.

Compartir artículo:

Más artículos geniales

Código fuente del sistema de inventarios con ASPNET Core (módulo monedas)

Código fuente del sistema de inventarios con ASPNET Core (módulo monedas)

Si quieres aprender a programar con ASP.NET Core, este video forma parte de la lista de reproducción para aprender a programar un sistema de inventarios con asp.net core y base de datos SQL Server

Ver artículo completo
Uso de HTML, CSS y JavaScript en ASP.NET Core

Uso de HTML, CSS y JavaScript en ASP.NET Core

En este artículo del uso de HTML, CSS y JavaScript en ASP.NET Core, aprenderás a crear y configurar proyectos de ASP.NET Core, a trabajar con HTML, CSS y JavaScript para crear una interfaz atractiva

Ver artículo completo

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla