He visto que ambos se usan y me pregunto, ¿hacen lo mismo o cosas diferentes? Si es el último, ¿cuál es la diferencia?¿Debo usar RouteParameter o UrlParameter para una ruta Asp.NET web-api?
Intenté responder yo mismo echando un vistazo a la plantilla de la API visual studio MVC 4 (rc), pero tristemente utiliza ambas, por lo que mi confusión persiste. Esto es lo que contiene la plantilla:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
Aha ... Ni siquiera me di cuenta de que habían llamado a diferentes métodos en el objeto de rutas. Pero tiene sentido. Me pregunto por qué han incluido vistas y elementos de mvc en la plantilla de API web. Espero que terminen con la plantilla de SPA pronto. ¡Gracias! :) – Mithon
También hay un comportamiento diferente entre dos de estos. Si marca esta publicación: http://stackoverflow.com/questions/19043266/in-asp-net-webapi-does-routeparameter-optional-mean-optional-part-of-the-url UrlParameter.Optional no requerirá usted para especificar los parámetros predeterminados, mientras que RouteParameter.Optional lo hará. –