"문제"는 서버 측에 있습니다. 클라이언트가 올바른 형식의 요청을했지만 서버가이를 충족시킬 수 없습니다. 그래서 나는 "서버 오류", 5xx 상태 코드에 관심이 있습니다.
Quoth RFC 7231 (현재 HTTP 표준, 강조 추가) :
5xx (서버 오류) 상태 코드 클래스는 서버가 서버가 요청 된 메소드를 잘못 했거나 수행 할 수 없음을 인식하고 있음을 나타냅니다 . HEAD 요청에 응답 할 때를 제외하고, 서버는 오류 상황에 대한 설명과 일시적 또는 영구 조건 인지 여부를 포함하는 표현을 보내야합니다 .
노트
- " 요청을 수행 할 수 없거나 오류 가 발생했습니다": "서버 오류"라는 제목에도 불구하고 서버 오류만을위한 것이 아닙니다.
- " 임시 또는 영구":이 코드는 귀하와 같은 일시적으로 사용할 수없는 리소스에 적합합니다.
사용 가능한 코드 중에서 503은 "서비스를 사용할 수 없음" 이 가장 적합 하다고 말합니다 .
503 (Service Unavailable) 상태 코드는 서버가 일시적 과부하 또는 예정된 유지 보수로 인해 현재 요청을 처리 할 수 없음을 나타냅니다. 이는 약간의 지연 후에 완화 될 수 있습니다. 서버는 Retry-After 헤더 필드를 보내서 요청을 재 시도하기 전에 클라이언트가 기다리는 시간을 제안 할 수 있습니다.
노트 :
- "약간의 지연 후에 완화 될 수 있습니다": 귀하의 경우에는 해당됩니다.
- "임시 과부하": 귀하의 경우에는 사실이 아닙니다. 그러나이 주장 할 수있는, 클라이언트가 요청을하면 서버가 훨씬 더 빨리, 일괄 처리가 이미 있으므로, 수행했을했다 입니다 클라이언트가 할 수 빨리 서버가 아닌 리소스를 요구하고있다 "과부하"의 종류 사용할 수 있습니다.
- 재 시도는 서비스에 적합하므로 회신에
Retry-After
값 이 포함되어야 합니다. 다음 일괄 프로세스 실행의 예상 완료 시간 또는 일괄 프로세스의 실행 간격을 값으로 제공 할 수 있습니다.
허용 되지만 자신의 5xx 상태 코드 (예 : 591)를 정의 하면 잘못된 의미가 있습니다.
클라이언트는 첫 번째 숫자로 표시되는 모든 상태 코드의 클래스를 이해하고 인식 할 수없는 상태 코드를 해당 클래스의 x00 상태 코드와 동등한 것으로 취급해야합니다.
클라이언트는 자신의 상태 코드를 500, "내부 서버 오류" 로 취급합니다 .