2013-03-13 3 views
9

다른 리소스의 일부인 리소스를 요청할 때 올바른 응답 코드 & 메시지에 대한 몇 가지 지침을 찾고 있습니다. 예를 들어부모 리소스가 누락 된 REST API 코드/메시지

에 GET 요청 :

사용자/{ID} 사용자가 찾을 수 없음 사용자 자원의 메시지와 함께, 404을 반환 존재하지 않는

. 다음 리턴에는 사용자가 리소스를 찾을 수 없습니다해야하는지 나의 질문은

:

사용자/{ID}/친구

나는 현재 첫 번째 예에서와 동일한 코드/메시지를 반환하고있어 . 친구 리소스와 관련된 메시지를 반환해야합니까? 필자는 개인적으로 API 클라이언트가 상위 리소스를 찾을 수 없다는 사실을 알게하는 것이 더 도움이된다고 생각합니다.

답변

6

이 특정 예에서 클라이언트가 존재하지 않는 사용자에 대한 친구 요청과 단순히 친구가없는 사용자에 대한 친구 요청을 구분할 수있게하는 것이 주 목적이라면 가장 이해하기 쉽다고 생각합니다 첫 번째 경우에는 404를 반환하고 두 번째 경우에는 빈 집합을 사용하여 200을 반환합니다.

즉, "none"은 친구에게 유효한 값입니다. 사용자는 존재하지만 친구 (잠재적으로 비어있는)의 목록은 없으므로 상위 리소스에 대해 404를 발행하는 데 애매 모호하지 않습니다.

+0

나는 OP와 똑같은 것을 숙고하고 있는데, 이것은 나의 특별한 유스 케이스를위한 올바른 방법이라고 느낀다. 귀하의 사례에 더 추가하려면 [Wikipedia] (https://en.wikipedia.org/wiki/List_of_HTTP_status_codes)에 '404'에 대한 "후속 요청은 허용됩니다"라고 명시되어 있습니다. 어떤 점에서는 그 ID를 가진 사용자가 존재하기 시작할 것이기 때문에 '400'은 요청이 클라이언트 오류로 인해 나쁘다는 것을 암시하며 앞으로는 유효하지 않을 수 있기 때문에 이것이 옳다고 생각합니다. – djskinner

1

400 Bad Request 헤더를 반환하고 응답 본문에 오류 메시지를 넣으려고합니다. 불행하게도이 시나리오에는 옳고 그른 대답이 없으므로 나와 함께하는 것이 가장 좋습니다.