Как сделать больше MapHttpRoutes для MVC 4 Api
У меня есть два API-маршрута для моего API atm, но я хочу добавить больше, и, как я это делаю, он, кажется, перезаписывает друг друга, поэтому в вставленном мной кодеке работает только маршрут CreateUser
.
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapHttpRoute(
name: "CreateUser",
routeTemplate: "api/{controller}/{cUser}",
defaults: new
{
controller = "User",
action = "CreateUser",
cUser = RouteParameter.Optional
});
routes.MapHttpRoute(
name: "AllGames",
routeTemplate: "api/{controller}/{playerId}",
defaults: new
{
controller = "Game",
action = "GetAllGames",
playerId = RouteParameter.Optional
});
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional
});
}
Ответы
Ответ 1
Я считаю, что шаблон api/{controller}/{cUser}
в пути "CreateUser" соответствует остальным действиям контроллера из-за его более общего шаблона. Используйте определенное имя контроллера в маршрутах как "Пользователь" (api/User/{cUser}) и "Игра" (api/Game/{playerId}). Более конкретные маршруты должны быть сверху и более общие внизу.
routes.MapHttpRoute(
name: "CreateUser",
routeTemplate: "api/User/{cUser}",
defaults: new
{
controller = "User",
action = "CreateUser",
cUser = RouteParameter.Optional
}
);
routes.MapHttpRoute(
name: "AllGames",
routeTemplate: "api/Game/{playerId}",
defaults: new
{
controller = "Game",
action = "GetAllGames",
playerId = RouteParameter.Optional
}
);