아래 시나리오에 따르면
누군가가 올바른 형식이지만 "좋은"데이터가 아닌 데이터로 서버에 요청한다고 가정 해 봅시다. 예를 들어 누군가 누군가 문자열 값을 예상하는 API 엔드 포인트에 문자열 값을 게시했다고 가정 해보십시오. 그러나 문자열 값에는 블랙리스트에 올린 데이터가 포함되어 있습니다 (예 : 사람들이 "암호"를 암호로 사용하지 못하도록 방지). 상태 코드는 400 또는 422 일 수 있습니까?
지금까지 w3.org에 따르면 "400 잘못된 요청"을 반환했을 것입니다.
잘못된 구문으로 인해 서버에서 요청을 이해할 수 없습니다. 클라이언트는 수정없이 요청을 반복해서는 안됩니다.
이 설명은 상황에 맞지 않습니다. 그러나 HTTP / 1.1 프로토콜에 정의 된 핵심 HTTP 상태 코드 목록으로 가면 아마도 가장 좋은 방법 일 것입니다.
그러나 최근에 내 개발자 팀의 누군가가 인기 API가 HTTP 확장을 사용하여 오류보고에 대해보다 세분화되기 시작했다고 지적했습니다. 특히 Twitter 및 Recurly와 같은 많은 API는 WebDAV의 HTTP 확장에 정의 된 "422 Unprocessable Entity"상태 코드를 사용하고 있습니다. HTTP 상태 코드 422 상태 :
422 (처리 할 수없는 엔티티) 상태 코드는 서버가 요청 엔티티의 컨텐츠 유형을 이해하므로 (415 (지원되지 않는 매체 유형) 상태 코드가 부적절 함) 요청 엔티티의 구문이 정확함 (따라서 400 (잘못된 요청) ) 상태 코드는 부적절하지만 포함 된 지침을 처리 할 수 없습니다. 예를 들어, XML 요청 본문에 올바른 형식 (구문 적으로 올바른)이지만 의미 상 잘못된 XML 명령어가 포함 된 경우이 오류 조건이 발생할 수 있습니다.
위의 비밀번호 예제로 돌아가서이 422 상태 코드는 훨씬 더 적합하다고 생각합니다. 서버는 당신이하려는 일을 이해합니다. 제출하는 데이터를 이해합니다. 단순히 데이터를 처리 할 수 없습니다.