2012-04-27 1 views
5

StackExchange의 API 결과를 기반으로 API를 근본적으로 만들려고합니다.이 Json 결과가 404 또는 200을 리턴해야합니까?

여기 내 json 출력이 있습니다.

{ 
    "items" : [ ... objects in here .... ] 
    "page" : 
    "page_size" : 
    "total_pages" : 
    "total_items_count" : 
    "maximum_quota" : 
    "remaining_quota" : 
} 

매우 간단합니다.

자, 사람이 .. 제품이나 질문 등을 요청하려하고 그 항목이 존재하지 않으면 어떻게되는지 모르겠습니다.

예 ..

{ 
    "items": [] 
    ... snipped .... 
} 

나는 Items 속성이 비어있는과 함께, 위의 (200) 및 JSON을 반환 생각했다.

내가 가진 다른 아이디어 빈 항목 속성과 그 JSON을 반환하지만 404

생각/표준 응답 HTTP 상태를 설정?

정말 상관없이 json을 반환하고 싶습니다. 왜? 할당량. 심지어 빈 결과는 api 서비스에 대한 적법한 히트입니다. 제 생각에는

+2

제 생각에는 표준을 찾을 수없는 코드이기 때문에 404를 사용합니다. – hawkfalcon

답변

3

나는 400 & (204) 상태 반환 :. 요청이 잘못된 구문으로 인해 충족 될 수없는

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

400 잘못된 요청을 [2]

잘못된 인수를 전달하면 요청이 잘못되었다는 400 상태가 반환됩니다.

이 시나리오에서는 JSON 메시지를 반환하지 않습니다. 그것은 잘못되었습니다. StatusMessage는 '잘못된 인수'라고 말할 수 있지만 내용은 없습니다.


204 서버가 요청을 성공적으로 처리했지만 콘텐츠를되지

콘텐츠 없음. [2]

유효한 인수를 전달했지만 내용을 찾을 수 없으면 찾을 수 없다고 말할 수 있습니다.

일부 정보를 다시 전달할 수도 있습니다. 그렇지 않을 수도 있습니다.

트위터의 경우 '@JohnDoe'사용자를 검색하려고했지만 찾지 못했다고합니다. 당신은 204 번을 말할 수 있습니다 : "미안하지만 @ 존도를 찾을 수는 없지만, 당신이 원하는 것일 수있는이 3 명의 비슷한 사람들을 찾았습니다."어떤 경우에 당신은 자신의 세부 사항, 단지 트위터 이름을 푸시하지 않을 것입니다.

그러나 트위터를 찾고 있었지만 찾을 수없는 경우 클라이언트에 추가 정보를 보낼 이유가 없습니다. 찾지 못했다고 이야기의 끝.

+0

좋아해요! 나는 204 생각하지 못했어 :) 그리고 네, 400은 나쁜 요청 데이터를 전달하는데 사용합니다. –