이것은 확실히 Beta에서 RC 로의 변경입니다. 질문에 제공된 예제에서 이제 [HttpGet] 또는 [AcceptVerbs ( "GET")]로 작업을 장식해야합니다.
이것은 동사 기반 동작 (예 : "GetSomething", "PostSomething")을 동사 기반이 아닌 동작과 혼합하려는 경우 문제를 일으 킵니다. 위의 속성을 사용하려고하면 컨트롤러의 동사 기반 작업과 충돌이 발생합니다. arount를 얻는 한 가지 방법은 각 동사에 대해 별도의 경로를 정의하고 기본 동작을 동사 이름으로 설정하는 것입니다. 이 접근 방식은 API에서 하위 리소스를 정의하는 데 사용할 수 있습니다. 예를 들어 다음 코드는 "/ resource / id / children"을 지원합니다. 여기서 id와 children은 선택 사항입니다.
context.Routes.MapHttpRoute(
name: "Api_Get",
routeTemplate: "{controller}/{id}/{action}",
defaults: new { id = RouteParameter.Optional, action = "Get" },
constraints: new { httpMethod = new HttpMethodConstraint("GET") }
);
context.Routes.MapHttpRoute(
name: "Api_Post",
routeTemplate: "{controller}/{id}/{action}",
defaults: new { id = RouteParameter.Optional, action = "Post" },
constraints: new { httpMethod = new HttpMethodConstraint("POST") }
);
향후 Web API 버전에서이 시나리오를 더 잘 지원할 수 있기를 바랍니다. 현재 aspnetwebstack codeplex 프로젝트, http://aspnetwebstack.codeplex.com/workitem/184 에 기록 된 문제가 있습니다 . 이것이 당신이보고 싶은 것이 있다면, 이슈에 투표하십시오.