2011-10-01 2 views
5

개인 레스트와 같은 API를 구현하기 위해 장고를 사용하고 있으며 다른 버전의 API를 백엔드에서 처리하는 방법을 잘 모르겠습니다.여러 버전의 API 백엔드 구현 방법

의미, 두 버전의 API가 있다면 내 코드는 어떻게 생겼습니까? 다른 버전을 처리하는 다른 앱이 있어야하나요? 다른 기능이 다른 버전을 처리해야합니까? 또는 한 버전이 다른 버전과 다른 경우에 대한 진술을 사용해야합니까?

헤더에 버전을 명시 할 계획입니다.

감사

답변

3

당신은 버전 REST API를 할 필요가 없습니다. REST를 사용하면 런타임에 "반드시 페이로드 확장 규칙을 무시해야합니다."라고하거나 컨텐트 협상을 통해 버전 관리가 수행됩니다.

'must-ignore payload extension rules'은 메시지 디자인을 구성하는 측면을 나타냅니다. '무시 무시'은 주어진 형식의 메시지를 처리하는 소프트웨어가 알려지지 않은 구문 구조를 무시해야 함을 의미합니다. 이것은 HTML에서 우리 모두가 알고있는 것과 파서가 질식하지 않고 모든 종류의 멋진 태그를 HTML 페이지에 삽입하는 것을 가능하게하는 것입니다.

'무시 무시'를 사용하면 이전 버전 만 이해하는 클라이언트를 고려하지 않고 이미 보낸 내용에 내용을 추가하여 서비스의 기능을 발전시킬 수 있습니다.

내용 협상이란 런타임에 서버가 지정된 클라이언트에 보내는 실제 표현을 협상하는 HTTP 내장 메커니즘을 나타냅니다. 일반적인 시나리오는 다음과 같습니다. 클라이언트는 요청에 Accept 헤더를 보내 자신이 할 수있는 것을 광고하고 서버는 이러한 기능을 기반으로 전송할 표현을 선택합니다. 하지만이 테마의 변형도 있습니다 (자세한 내용은 여기를 참조하십시오 : http://www.w3.org/Protocols/rfc2616/rfc2616-sec12.html).

콘텐츠 협상은 호환되지 않는 변경을 허용합니다. 즉, 호환되지 않는 이전 버전과 새로운 버전을 내 서비스로 전송할 수 있으며 Accept 헤더를 기반으로 서비스에서 적절한 서비스를 보낼 수 있습니다.

결론 : 두 가지 방법을 사용하면 API가 그대로 유지됩니다. API 레벨에서 버전 관리를 할 필요가 없습니다. 특히 URI에 버전 식별자를 포함시키지 않는 것이 좋습니다 (예 : SOAP가 아닌 REST를 여기서 수행하십시오!)

+0

거꾸로 처리하는 방법 호환되지 않는 데이터베이스/모델 변경, 이전/배포 된 클라이언트가 전환 기간 동안 계속 작업 할 수있게합니까? –

관련 문제