2011-10-06 2 views
3

MVC3에서 수행중인 RESTful API가 있습니다. 다른 컨트롤러로 이동하기 위해 라우팅 버전을 갖고 싶습니다. 우리의 현재 경로는 다음과 같습니다 향후MVC3 안정적인 버전 관리 경로

routes.MapRoute("api1", "{controller}/{action}/v1"); 
//routes.MapRoute("api2", "{controller}/{action}/v2"); 

, 우리는 버전 2가 ... 있는지 V1 API는 V1 및 V2는 버전 2 개 API에 간다 컨트롤러로 이동하기에 가장 좋은 방법은 무엇인가 할 때?

감사합니다.

답변

3

당신은 경로

routes.MapRoute("api1", "{action}/v1", new { controller = "V1" }); 
routes.MapRoute("api2", "{action}/v2", new { controller = "V2" }); 

나는 URL에서 버전 관리하는 것이 반드시 나쁜 생각, 다른 포스터에 동의하지 않을 것으로 컨트롤러를 하드 코딩 할 수 있습니다. URL 버전 관리는 출력 캐싱 측면에서보다 유연합니다.

+0

반쯤 이해할 수있는 일시적 유행에 따라이 시점에서 REST를 구현하지 않는다는 사실을 꼭 확인하십시오. Darrel Miller가 아래에 가장 답변했습니다. –

+0

실제 REST 서비스에서 URL 버전 관리가 리소스의 하이퍼 미디어 링크를 손상시킬 수 있다는 것에 동의합니다. 이를 위해 사용자 지정 콘텐츠 형식을 정의하는 것이 좋습니다. 대답은 단순히 REST 정의에 초점을 맞추는 대신 원래의 질문을 해결하기위한 것입니다. –

+0

나는 그 이유 때문에 이미 대답을 +1했습니다. –

0

버전 관리가 필요한 경우 버전 관리를 URL을 통해 수행하면 안됩니다. 그것은 내용에서 끝나야합니다. 그렇다면 웹 사이트에 HTML5 URL을 만드는 웹 사이트가 보이지 않는 이유는 무엇입니까?

REST의 주 목적은 클라이언트와 서버가 독립적으로 발전 할 수있게하는 것입니다. 대다수의 경우 버전 관리가 필요하지 않습니다.

+0

URL을 통한 REST 버전 관리는 대부분의 대형 웹 플레이어 (Facebook, twitter 등)가 사용하는 REST 표준입니다. –

+0

@KevinJensen @KevinJensen @KevinJensen 큰 웹 플레이어는 REST를 전문 용어로 사용하고 REST의 제약 조건을 무시합니다. 또한 숙련 된 REST 개발자와 이야기하면 내가 말하는 것과 똑같이 말할 것입니다. –

+0

나는 'REST'라는 용어가 종종 던져지고, GET/POST/PUT/DELETE는 종종 활용도가 낮다는 것에 동의하지만, 여전히 이론을 검증하지는 않습니다. 나는 또한 URL 버전 관리가 REST 이론에 위배된다는 것을 이해한다. 그러나 훨씬 더 실용적인 접근 방식이며 그렇게 큰 이유가있다. 여기를보십시오 : http://blog.apigee.com/taglist/Versioning –

0

대안은 ASP.net MVC 영역을 사용하여 구현할 수도 있습니다.