2012-11-07 4 views
0

asp.net mvc에서 웹 API를 개발하려는 첫 단계를 수행하고 있습니다.asp.net mvc에서 라우팅을 알아낼 수 없다

나는 다음과 같은 라우팅 기능이 있습니다

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     name: "cdApiDefault", 
     url: "api/{controller}/{action}/{token}/{mid}/{id}", 
     defaults: new { 
      token = UrlParameter.Optional, 
      mid = UrlParameter.Optional, 
      id = RouteParameter.Optional } 
    ); 
} 

다음과 같은 컨트롤러 :

namespace cdapi.Controllers 
{ 
    public class PostsController : ApiController 
    { 
     // GET api/posts 
     public IEnumerable<string> Get() 
     { 
      return new string[] { "GET_value1", "GET_value2" }; 
     } 

     // GET api/posts/5 
     public string Get(int id) 
     { 
      return "value!!!!!!!!!!!!!!!!!"; 
     } 

     // POST api/posts 
     public void Post([FromBody]string value) 
     { 
     } 

     // PUT api/posts/5 
     public void Put(int id, [FromBody]string value) 
     { 
     } 

     // DELETE api/posts/5 
     public void Delete(int id) 
     { 
     } 

     public String GetTest(String token, String mid) 
     { 
      return token + " - " + mid; 
     } 
    } 
} 

다음 호출

hxxp : // 로컬 호스트 : 52628/API/게시물/5

(내 브라우저에서) 일부 결과, 즉 GET 함수가 호출되어 값을 반환합니다. 내가 시도하지만

,

hxxp : // 로컬 호스트 : 52628/API/글/GetTest/MyTestToken/myTestMid

로 돌아 오면 '리소스를 찾을 수 없습니다' 오류 메시지.

은 내가 {동작} 호출 할 수있는 기능을 포함해야한다고 생각하고 '토큰''중간'이 값을 포함해야 내가 지정합니다. 내가 뭘 잘못 했니?

+0

를 반환하기 위해 방법을 수정하려면 귀하의 질문이나 문제의 원인이 철자 오류가 있지만 ASP.NET 웹 API의 경우 MapRoute가 아닌'MapHttpRoute'을 사용해야합니다 - 확인하십시오. – tpeczek

답변

0

ApiController는 일반 MVC 컨트롤러와 다르게 작동합니다. 여기에서 메서드 이름 (GET, POST, PUT, DELETE)은 URL 조각이 아니라 HTTP VERBS를 나타냅니다. 첫 번째 전화에서

/api/posts/5 

Get(int)을 호출합니다.

는 대신 System.Web.Http.ApiControllerSystem.Web.Mvc.Controller에서 상속하여 표준 MVC로 전환을 원하는처럼 라우팅을하고이 경우 잘 모르겠어요 때문에 나는 아직 대답으로이 글을 쓰는 아니에요 ActionResult

관련 문제