This article has been localized into Spanish by the community.
Introducción
El enrutamiento (Rounting) en MVC es el concepto de mapeo a URL, por medio del cual el usuario final solicitará a través de su explorador a un método en uno de tus controladores, el cual enviará una respuesta de regreso al explorador. La respuesta frecuentemente será una Vista, pero también puede ser una simple pieza de texto, un Redirect o redireccionamiento, o un número de otras opciones.
Enrutamiento por defecto
Si tú estás trabajando en un proyecto nuevo, creado con una plantilla vacía en Visual Studio, entonces tu aplicación no tiene ningún tipo de ruteo o enrutamiento aún. Hablamos un poco sobre enrutamiento en el artículo sobre agregar un controlador de proyecto, pero si no has seguido este tutorial desde el inicio necesitamos que revises antes esto. Trata de abrir tu archivo Startup.cs, el cual debió de haber sido agregado a tu proyecto cuando lo creaste - si no hay nada sobre enrutamiento, necesitas agregarlo manualmente. La forma más fácil es utilizar dos métodos de ayuda llamados UseRouting() y UseMvcWithDefaultRoute() - que agregan una ruta básica (fallback) por defecto a tu proyecto, la cual tratará de mapear URLs a métodos en uno de tus controladores. Si no se especifica un nombre de controlador, la URL será mapeada al HomeController.
Así es como se debe de ver tu archivo Startup.cs:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();
});
}
Gracias a estos métodos, tu aplicación ahora soporta enrutamiento básico. Aquí hay algunos ejemplos de URL's que ahora funcionan y la combinación Controlador/Método que se asignan:
http://localhost/ -> HomeController.Index()
http://localhost/Home/Index -> HomeController.Index()
http://localhost/Test/ -> HomeController.Test()
http://localhost/Home/Something -> HomeController.Something()
Pero esto no sólo afecta al HomeController - en vez de eso, agregar soporte general para acceder a un método en un controlador sin tener que crear rutas específicas para esto. Así que, si tú tienes un controlador llamado UserController, el cual tiene un método llamado Details(), puedes accederlo por la siguiente url: /User/Details
En otras palabras, el ruteo por defecto actúa como un tipo de regla "atrapa todo" , para ser fácil para ti tener algunas páginas básicas listas y corriendo. Pero desde luego, esto sólo funciona si todo tu contenido sigue el mismo patrón: /[nombre-de-controlador]/[nombre-de-metodo]
Tan pronto como te desvíes de esto, por ejemplo porque tú no quieres que el nombre específico de tu controlador aparezca en la url, necesitarás agregar tus propias reglas. No te preocupes - aún puedes depender del Routing por defecto, simplemente agregas tus propias reglas antes de que el ruteo por defecto sea aplicado. Veremos más de eso luego.
Resumen
Ruteo es el proceso de mapear de URLs, el cuál especifica cómo un usuario accede a una página específica con funcionalidad en tu aplicación, al controlador y al método en este controlador, el cuál debe de ser responsable de crear la respuesta a la url. Gracias al ruteo por defecto, como vimos en este artículo, puedes conseguir usar la funcionalidad de ruteo más básica de forma muy fácil, pero para situaciones más complejas, necesitarás crear tus propias reglas. No te preocupes, hablaremos mucho más de esto en los siguientes artículos.