답변:
404 NOT FOUND
이 ID의 리소스가 존재하지 않기 때문에 적절한 응답으로 보입니다. 이해하는 것이 매우 분명하며 a/{id}
호출 되면 동일한 응답을 기대합니다 .
409 CONFLICT
예제에서 부모 리소스를 찾을 수 없을 때 409를 반환하기 때문에 더 나은 선택은 아닙니다 . :).
그러나 가장 중요한 것은 API에서 일관성이 있음을 기억하십시오.
id
)로 전달 된 경우 404입니다. 그러나 폴더가 본문에 전달 된 경우 다른 것 (412, 422 ... "유효성 검증 실패 : 폴더는 존재하지 않습니다 "). 질문하고 토론하는 것은 좋은 질문입니다.
@Dherik의 답변 외에도.
URI는 identifiers 이므로 ( /a/{id}/b
식별자) 를 명심해야합니다 . URI는 가 WWW에 대한 의미가 없다, 그래서 HTTP 클라이언트입니다.
404 가 정답 입니다. 본질적으로 서버가 응답하고 있습니다
그런 ID를 가진 리소스를 찾지 못했습니다. 리소스를 찾을 수 없습니다 1
누락 된 리소스가 부모 인지 자식인지 는 중요하지 않습니다.
개발자 는 URI에서 계층과 경로 를 볼 수 있지만 HTTP 클라이언트는 그렇지 않습니다. 다시 말해서 HTTP는 HTTP 클라이언트에 의해서만 해석되고 인간 (개발자, 최종 사용자 등)에 의해서는 해석되지 않습니다.
의심스러운 경우 어떤 코드가 자신에게 적합한 지 묻지 마십시오 (인간). HTTP 클라이언트에 어떤 코드가 적합한 지 묻습니다. HTTP 클라이언트의 동작을 어떻게 원하십니까?
왜? 일부 상태 코드로 인해 이러한 클라이언트가 특정 작업을 수행하기 때문입니다. 예를 들어, 302 입니다. 이 코드는 일반적으로 웹 브라우저가 응답 헤더에 통보 된 특정 위치 (URI)로 리디렉션되도록합니다.
이것은 귀하의 경우가 아닐 수도 있지만 알고 있어야합니다. 궁극적으로 HTTP 상태 코드는 HTTP 클라이언트로 전달됩니다. 우리의 응용 프로그램이 아닙니다. 사람이 아닙니다.
1 : 409 는 탐색 오류로 거의 구현되지 않습니다. 일반적으로 원격 작업 (삭제, 업데이트, 새로 만들기 등)을 실행합니다. 그러나 URI가 존재해야합니다. 그렇지 않으면 404가 우선합니다