2012-03-22 6 views
0

내가 api.ourdomain.com/ 가있을거야에서 액세스 할 수있는 몇 가지 REST API를 설계하고있어 아래 여러 API가있을 때 REST API를 여러 API를 버전이 동일한 도메인

api.ourdomain.com/Provider/ 
api.ourdomain.com/Consumer/ 
api.ourdomain.com/Customer/ 
api.ourdomain.com/Authorization/ 
같은

등 이들은 API 하위 도메인에서 벗어나 매우 독립적 인 API는 아닙니다.

지금 나는 데 혼란은

내가 앞서으로 이동한다

api.ourdomain.com/Provider/v1/resource/etc/ 

또는

api.ourdomain.com/v1/Provider/resource/etc/ 

그래서 적절한 정말 IS 질문, 넣어이다 버전 이후, API 이름 뒤에

℃/공급자/V1/XYZ/등]

이나 조직의 관점에서, API 유형 공급자 V1

[/ V1/공급자/XYZ/등]

임의 제안은 감사합니다 감사.

답변

0

내가 아는 한 실제로이 규칙이 없습니다. 여기에 구글, 야후와 마이크로 소프트의 API의 예는 다음과 같습니다

https://www.googleapis.com/language/translate/v2?parameters

http://local.yahooapis.com/MapsService/V1/geocode

http://dev.virtualearth.net/REST/v1/Locations/FR/postalCode/locality/

내 취향이 모든 방법 (구글과 같은) 끝에있는 버전을 떠날 것입니다. 이 방법은 대부분의 URL이 동일하게 유지되며 마지막 부분 만 변경됩니다. 다시 말하지만, 이것은 관례가 아닌 나의 취향 일뿐입니다.

0

일반적인 방식으로 대답 할 수는 없지만 사용자가 제한된 환경에 있고 API의 비즈니스 사례를 알고 있기 때문에 사용자의 응답이 의도 한 클라이언트 응용 프로그램에 의해 잘 결정될 수 있다고 생각합니다.

클라이언트 응용 프로그램이 "공급자"및 "소비자"하위 도메인에서 작동해야하는 경우 (예 : 각 버전을 적용한 이후로) 버전을 API 루트 ($ SERVER/$ VERSION/$ SUBDOMAIN)에 배치 할 것을 제안합니다. 하위 도메인은별로 의미가 없습니다. 클라이언트 측면에서 볼 때 API는 단일 솔리드로 작동합니다. (근원에서, 당신은 하나의 상수 "apiVersion"을가집니다).

각 끝점을 다른 클라이언트 응용 프로그램 (예 : "소비자"용 데스크톱 응용 프로그램 및 "공급자"용 데스크톱 클라이언트 시스템)에서 사용하는 경우 하위 도메인 ($ SERVER/$ SUBDOMAIN/$ VERSION)을 버전 관리하는 것이 좋습니다. 왜냐하면 다양한 개발 속도가 다양한 시스템에 적용될 수 있고 시스템은 다소간 독립적이기 때문입니다.

이 2 접근 방식이 더 유연하고 1 일에 매핑 될 수 있음을 주목할 필요가있다 :

$SERVER/1.0/$SUBDOMAIN_A/ 
$SERVER/1.0/$SUBDOMAIN_B/ 

쉽게 ==로 쓸 수있다>

$SERVER/$SUBDOMAIN_A/1.0 
$SERVER/$SUBDOMAIN_B/1.0 
내가 함께 갈 것

두 번째 접근법은 조금 더 안전합니다. 동시에 모든 API를 업그레이드하더라도 작동합니다.

일반적인 규칙은 좋은 API 디자인을 수행하고 호환되지 않는 변경을 피하여 API 버전을 업그레이드하는 것입니다.

업데이트 : API 의존성이라는 개념이 하나 더 있습니다. 예를 들어 인증 용 API를 업그레이드하여 새 API 버전이 필요할 경우 모든 클라이언트를 업그레이드해야하며이 API를 별도로 버전 관리해야 할 수도 있습니다. 이것은 두 번째 접근법에 대한 또 하나의 요점입니다 ...

희망이 ...

관련 문제