2011-04-08 5 views
1

Java EE 프로젝트에는 http://example.com/rest/과 같은 유용한 RESTful 인터페이스가 있습니다. 개발이 진행되면이 인터페이스의 새 버전을 만듭니다. 이전 버전과의 호환성을 위해 다른 URL로 모든 온라인 URL을 제공하고 싶습니다. 예를 들면 다음과 같습니다.모든 버전의 RESTful 인터페이스를 온라인 상태로 유지하는 방법은 무엇입니까?

http://example.com/rest/1.0/ 
http://example.com/rest/1.1/ 

질문은 어떻게 배포합니까? 우리는 다수의 WAR (Maven을 사용한다)를 조합해야 하는가? 그러나이 프로젝트의 최신 버전은 /trunk입니다. 일부 Maven 플러그인을 사용하여 서브 버전 /tags에서 이들을 모두 한 WAR로 패키지해야할까요? 당신의 경험은 무엇입니까?

+0

http://stackoverflow.com/questions/972226/how-to-version-rest-uris – Reddy

답변

2

그들은 모두 응용 프로그램의 "일급"부분입니다.

분리하지 마십시오. 자신을 다른 사람을 만지지 않고 업데이트하려고 혼란스럽게 만들뿐입니다.

변경하면 어쨌든 모든 것을 릴리스해야 할 것입니다.

4

나는 망치로 손가락을 때렸을 때 아파요, 어떻게해야합니까? 어쩌면 그만 두지 않을 래?

REST 아키텍처 스타일의 주요 목표 중 하나는 클라이언트와 서버가 독립적으로 발전 할 수 있도록하는 것입니다.

서비스의 새 버전을 작성하면 이전 서비스를 대체 할 완전히 새로운 서비스가 생성됩니다. 이렇게하면 REST가 달성하려고 시도하는 것을 버리는 것입니다.

아마도 HTTP Api를 작성하려는 의도 일 수 있습니다. (그러나 버전이 잘못되었을 때 불평하지 마세요 .-))

REST를하고 싶다면, REST API의 버전을 필요로 할 때 뭔가 잘못되었다고 생각하십시오. 그렇게 될 수도 있고 그렇게된다면 미디어 유형을 버전 관리하는 것을 고려하는 것이 가장 좋습니다. URI 버전 관리는 최후의 수단입니다.

1

인터페이스 클래스와 다른 경로로 다른 전쟁을 전개하십시오. 그렇게하면 새로운 버전을 방해하지 않고 "이전 버전"을 제거 할 수 있습니다. 개인적으로 나는 항상 새 파일 이름으로 새 버전을 배포 할 것입니다. 그렇게하면 이전 파일을 신경 쓸 필요가 없습니다.

1

버전/리소스 유형의 구조에 대해 이야기하고있는 경우 이전 구현을 유지하고 content negotiation을 사용해야 이전 클라이언트에서 계속 서비스를 사용할 수 있습니다.

유일한 변경 사항이 URL 구조 인 경우 버전 관리가 필요하지 않으며 301-Moved Permanently Redirects를 사용하십시오.

관련 문제