2017-01-11 16 views
1

내 API를 설계하고있어, 나는 URL을URL에 API 버전을 지정하면 헤더에 API 버전을 추가해야합니까?

GET /Issuer/{certificate-name}/versions?api-version=2016-10-01[&maxresults] 

나는 또한 (유연성)는 HTTP 헤더에 지정된 하나를 가지고 있어야에서 옵션 API 버전을 지정?

두 가지 접근 방식간에 충돌이 발생하면 어떻게해야합니까?

+0

처음부터 (모든 클라이언트 * 일부 * API 버전) 선택의 가치는 무엇입니까? 두 가지 방법으로 지정하는 것의 가치는 무엇입니까? – sisyphus

+0

지정된 값은 최신 버전과 동일하지 않습니다. 두 가지 다른 표현식을 사용하는 것의 가치는 REST - 이데올로기 적/근본 주의적 고객이 원하는 기능을 얻을 수있게하는 것입니다. 이런 의미에서 저는 ISV입니다. 저는 두 가지 관점 모두를 수용 할 필요가 있다고 생각합니다. @sisyphus – LamonteCristo

+0

브라우저에서 테스트 목적으로 특히 유용한 쿼리 매개 변수의 버전을 찾을 수 있습니다. 내가 좋아하는 브라우저와 JSON Extension을 사용하여 API가 어떻게 응답하는지 보여주는 링크를 "클릭"할 수있는 아이디어를 좋아합니다. 충돌이있는 경우, 이유를 나타내는 오류가있는 400을 반환하거나 그 중 하나에 우선 순위를 부여 할 수 있습니다 (queryParameter가 헤더보다 더 많은 값을 제공합니다. 이는 기존 구성을 무시하는 데 사용되기 때문입니다). 시험의 경우). 그러나 API 버전과 리소스 표현 버전을 조심하십시오. –

답변

1

두 가지 입력 방법 (쿼리 문자열 및 헤더)에서 API 버전을 입력 할 수있는 확실한 이점은 없습니다. 그러나 클라이언트가 둘 다를 지정하면 충돌 해결이 단점입니다.

API 버전을 지정해야하는 위치 또는 헤더 또는 쿼리 문자열 여부에 관계없이 올바른 방법은 없습니다. 그러나 URL은 파싱을 필요로하며 대부분 프레임 워크에 의해 수행되지만 여전히 URL을 파싱하여 값을 추출하는 데 소비하는 컴퓨팅 리소스입니다.

I (개인적으로)는 단순함으로 헤더를 사용하는 것을 선호합니다. 또한 URL을 클라이언트의 기능/의도를 가리키는 주소로만 유지하는 것이 더 깨끗해졌습니다.