2011-04-09 4 views
38

"항목이 존재하지 않습니다"페이지에 가장 적합한 HTTP 상태 코드가 무엇인지 궁금합니다."항목을 찾을 수 없음"오류 페이지에 가장 적합한 HTTP 상태 코드는 무엇입니까

페이지 자체가 없으면 분명히 404를 사용할 것입니다. 그러나 내 페이지 중 하나에 userid 인수가 있습니다 ("사용자 편집"페이지). 주어진 사용자 ID를 가진 사용자가없는 경우 오류 페이지가 표시되지만 4xx 상태 헤더를 보내고 싶습니다 ("200 OK"가 실제로 맞지 않기 때문에).

"찾을 수 없습니다"및 "파일을 찾을 수 없습니다"이후 404 괜찮을 것이라고 추측하지만,이 경우 더 나은 코드가 있는지 궁금합니다.

답변

55

모호한 HTTP 오류 코드로 지나치게 익숙해지는 것은 좋지 않습니다. 브라우저는 때때로 상황을 난처하게 만드는 도움이되지 않는 방식으로 반응합니다. Stick with 404.

+2

젠장, 좋은 충고를 해 주셨다. (OCD는 404가 아니라 모든 것이 사실이다.) –

21

404 반환 코드는 실제로 '자원을 찾을 수 없음'을 의미하며 요청이 있었지만 만족스럽지 않은 모든 엔티티에 적용됩니다. 따라서 페이지, 페이지의 하위 섹션 및 렌더링 될 특정 요청이있는 페이지에있는 모든 항목에 대해 동일하게 잘 작동합니다.

그래서이 시나리오에서는 404가 올바른 코드입니다. 이 메시지는 응답이 있지만 요청한 자원이 아닌 요청이 발행되었지만 전혀 응답되지 않은 다른 상황 인 '서버를 찾을 수 없음'에 적용됩니다. 이 적용되지 않습니다.

5

userid가 리소스 식별자 또는 추가 매개 변수인지 여부에 따라 다릅니다. 그 다음의 경우 무료 InfoQ Explores: REST

400 (bad request) ‐ indicates a bad request
또는
412 (Precondition Failed) e.g. conflict by performing conditional update

더 많은 정보와 같은 다른 코드를 반환 할 수없는 경우는 404을 반환 괜찮습니다.

+1

"additional parameter"라고 말하면 헤더 필드를 요청하는 것입니까? 그렇지 않으면 412를 사용하지 않는 것이 좋습니다. "The 412 (Precondition Failed) 상태 코드는 요청 헤더 필드에 주어진 하나 이상의 조건이 서버에서 테스트되었을 때 false로 평가되었음을 나타냅니다. " – oferei

관련 문제