コントローラーがUsers
あり、基本的な REST パターンは正常に機能しています。users/{id}/usergroups
ただし、そのユーザーのすべてのユーザー グループを返す追加のパターンが 1 つ必要です。
より多くのコントローラーで同様のルートが必要になると思うので、これを実装する最良の方法は何でしょうか。デフォルトのものだけでは十分ではありません...
エラー
要求に一致する複数のアクションが見つかりました: タイプ Api.Controllers.UsersController で Api.Models.Users.User GetUser(Int32) 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
私はamhedが提案したことをしましたが、問題は解決しません。
// 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 }
);