400 잘못된 요청 이 이제 사용 사례에 가장 적합한 HTTP / 1.1 상태 코드 인 것 같습니다.
귀하의 질문 (및 내 원래 답변) 당시 RFC 7231 은 문제가되지 않았습니다. RFC 2616이 다음과 같이 말했기 400 Bad Request
때문에 이의를 제기 한 시점은 다음 과 같습니다.
구문이 잘못되어 서버가 요청을 이해할 수 없습니다 .
설명하는 요청은 구문 적으로 유효한 HTTP에 포함 된 구문 상 유효한 JSON이므로 서버는 요청 구문 에 문제가 없습니다 .
그러나 코멘트에 리 Saferite가 가리키는 아웃로 , RFC 2616을 쓸모 없게 RFC 7231, 그 제한은 포함되지 않습니다 :
400 (잘못된 요청) 상태 코드는 클라이언트 오류 (예 : 잘못된 요청 구문, 잘못된 요청 메시지 프레이밍 또는 사기성 요청 라우팅)로 인식되는 것으로 인해 서버가 요청을 처리 할 수 없거나 처리하지 않음을 나타냅니다.
그러나 그 단어를 다시 말하기 전에 (또는 RFC 7231에 대해 제안 된 표준 일뿐입니다 ) RFC 4918에 소개 된 것처럼 다음 과 같이 사용 사례에 잘못된 HTTP 상태 코드 422 Unprocessable Entity
가 아닌 것 같습니다 .
HTTP / 1.1에서 제공하는 상태 코드는 WebDAV 메소드에서 발생하는 대부분의 오류 조건을 설명하기에 충분하지만 기존 범주에 속하지 않는 일부 오류가 있습니다. 이 사양은 WebDAV 방법을 위해 개발 된 추가 상태 코드를 정의합니다 (11 장)
그리고 설명은422
말합니다 :
422 (처리 할 수없는 엔티티) 상태 코드는 서버가 요청 엔티티의 컨텐츠 유형을 이해하므로 (415 (지원되지 않는 매체 유형) 상태 코드가 부적절 함) 요청 엔티티의 구문이 정확함 (따라서 400 (잘못된 요청) ) 상태 코드는 부적절하지만 포함 된 지침을 처리 할 수 없습니다.
(구문에 대한 언급을 참고하십시오; 7231은 4918도 부분적으로 쓸모없는 것으로 의심됩니다)
이것은 당신의 상황과 똑같이 들리지만 의심이있는 경우를 대비하여 다음과 같이 말합니다.
예를 들어, XML 요청 본문에 올바른 형식 (구문 적으로 올바른)이지만 의미 상 잘못된 XML 명령어가 포함 된 경우이 오류 조건이 발생할 수 있습니다.
( "XML"을 "JSON"으로 바꾸면 귀하의 상황에 동의 할 수 있습니다.)
이제 RFC 4918은 "WebDAV (Web Distributed Authoring and Versioning)를위한 HTTP 확장"에 관한 것이며 WebDAV와 관련하여 아무 것도하지 않을 것이므로이를 사용해서는 안된다고 반대 할 것입니다.
상황을 명시 적으로 다루지 않는 원래 표준에서 오류 코드를 사용하는 것과 상황을 정확하게 설명하는 확장 중 하나를 사용하는 것 중에서 선택하면 후자를 선택합니다.
또한 RFC 4918 섹션 21.4 는 IANA 하이퍼 텍스트 전송 프로토콜 (HTTP) 상태 코드 레지스트리를 참조 하며 여기서 422를 찾을 수 있습니다.
HTTP 클라이언트 또는 서버가 올바르게 레지스트리를 유지하는 한 해당 레지스트리의 상태 코드를 사용하는 것이 합리적이라고 제안합니다.
그러나 HTTP / 1.1부터 RFC 7231 에는 견인력이 있으므로 사용하십시오 400 Bad Request
!