2013-05-15 6 views
1

HTTP GET 매개 변수를 지원하는 REST API를 설계하고 있습니다. 대부분의 경우 매개 변수에 대해 하나의 값만 허용합니다. 하지만 중복 매개 변수는 어떻게 처리해야합니까? 두 값을 전달충돌하는 HTTP GET 매개 변수를 처리하는 방법

http://stackoverflow.com/?tab=hot 
http://stackoverflow.com/?tab=featured 

중복 매개 변수가 허용됩니다 올바른 : 예를 들어

은 스택 오버플로는 GET의 PARAM tab을 받아

http://stackoverflow.com/?tab=hot&tab=featured 

어떻게해야합니까? 첫 번째 값으로 가서 다른 값 (SO가하는 것)을 자동으로 무시하거나 하나의 값만 허용된다는 오류를 반환 하시겠습니까? 후자의 경우 어떤 상태 코드로 어떤 오류를 반환해야합니까 (아마도 409 충돌).

답변

1

내가 VKSingla에 동의이 질문을 지칭하는 요청이 있어야한다 이 문제에 대한 정답 만이 아닙니다.

내가 '엄격한'API를 만들고 그냥 오류를 던져 줄 것을 묻는다면 (사용자에게 도움이되지 않는 임의의 코드가 아닌 명확한 오류인지 확인해야합니다). 사용자 코드가 동일한 매개 변수를 두 번 더 추가하면 사용자 코드의 어딘가에 버그가 생길 수 있으므로이 엄격한 접근 방식을 선호합니다. 가능한 한 빨리이 버그를 공개하면 사용자가 버그를 빨리 찾을 수 있습니다.

다른 매개 변수를 무시하고 선택하는 경우 사용자가이 동작을 알고 있는지 확인하십시오. 예를 들어 문서 '모든 중복 된 매개 변수는 무시됩니다.' 이와 같은 문서화되지 않은 '마술 행동'은 코드를 디버그하기가 어렵게 만듭니다.

0

이것은 디자인 결정입니다. 귀하의 API 기능을 원하는대로 디자인하십시오.
아무 것도 선택하지 않으면 질문은 어느 것입니까?
그래서 단순히 충돌입니다. 그렇지 않으면
때문에 거기, 당신의 API가 결합 된 데이터로 응답 할 수 있지만,이

https://stackoverflow.com/?tab=hot,featured 

은 또한이 디자인 결정이다 Extra Query parameters in the REST API Url

+1

나는 이것이 디자인 결정이라는 것에 동의하지만'? tab = hot & tab = features'이 틀리며'? tab = hot, featured'이어야한다는 생각을 어디서 얻었습니까? 매개 변수를 여러 번 전달하는 것은 매우 합법적입니다. – siebz0r

+0

두 값이 동일한 매개 변수에 해당 할 때 항상 함께 정의하는 것이 좋습니다. 이것은 내가 생각하기에 최고의 디자인입니다. –

관련 문제