У меня есть контроллер Users
, а основной шаблон REST работает нормально. Однако мне нужен еще один шаблон users/{id}/usergroups
, который будет возвращать все пользовательские группы для этого пользователя.
Какой был бы лучший способ реализовать это, так как я предполагаю, что мне понадобятся подобные маршруты на многих других контроллерах. Просто по умолчанию их недостаточно...
Error
Было найдено несколько действий, соответствующих запросу: Api.Models.Users.User GetUser (Int32) по типу Api.Controllers.UsersController System.Collections.Generic.IEnumerable`1 [Api.Models.Users.UserGroup] GetUserGroups (Int32) по типу Api.Controllers.UsersController
код
// GET api/Users
public IEnumerable<User> GetUsers()
// GET api/Users/5
public User GetUser(int id) // THIS IS CONFLICT 1
// PUT api/Users/5
public HttpResponseMessage PutUser(int id, User user)
// POST api/Users
public HttpResponseMessage PostUser(User user)
// DELETE api/Users/5
public HttpResponseMessage DeleteUser(int id)
// GET api/Users/5/UserGroups
public IEnumerable<UserGroup> GetUserGroups(int id) // THIS IS CONFLICT 2
Изменить 1
Я сделал то, что предложил, и это не решает проблему.
// GET api/Users/5
[HttpGet, ActionName("getuser")]
public User GetUser(int id) // THIS STILL DOES NOT WORK
// GET api/Users/5/UserGroups
[HttpGet, ActionName("usergroups")]
public IEnumerable<UserGroup> GetUserGroups(int id) // THIS WORKS
// ROUTES
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}/{action}",
defaults: new { id = RouteParameter.Optional, action = RouteParameter.Optional }
);