APIを作成しようとしています。署名は次のようになります。
public class CardsController : ApiController
{
[HttpGet]
public ClientData NewGame(){...}
[HttpGet]
public ClientData Deal(int sessionId){...}
[HttpGet]
public ClientData Stand(int sessionId){...}
}
他のすべてがデフォルトであると、クラスがDealとStandを区別できないというエラーが発生していました。少し調べてみたところ、ルーティングの問題であることがわかりました。そこで、ルーティングを更新することにしました。
私のglobal.asax.csは次のようになります。
public class MvcApplication : HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapHttpRoute("api", "api/{controller}/{action}/{value}", new { value = RouteParameter.Optional});
}
}
に移動すると、 HttpResourcehttp://localhost:54924/api/Cards/Stand/19
が見つからなかったというエラーが表示され、に移動するとアクションがhttp://localhost:54924/api/Cards/Stand
トリガーされますNewGame()
。Stand and Dealを同じコントローラーで動作させるにはどうすればよいですか?