제 생각에는 클라이언트에 응용 프로그램 수준의 문제를보고하는 데 200이 아닌 코드를 사용해서는 안됩니다.이 코드는 HTTP 수준의 기능만을 위해 예약되어 있습니다.
그냥 돌아 분별 200 코드와 장소 애플리케이션 레벨의 에러 코드/메시지/어떤 HTTP 응답 본문에
그러나, 응용 프로그램 수준의 의사 소통을 500 개 코드를 사용하여 적어도 하나의 프로토콜이있다 실패 : SOAP.
HTTP/1.1 500 Internal Server Error
Content-Type: application/soap+xml; charset="utf-8"
Content-Length: nnnn
<?xml version='1.0' ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Body>
<env:Fault>
<env:Code>
<env:Value>env:Sender</env:Value>
<env:Subcode>
<env:Value>rpc:BadArguments</env:Value>
</env:Subcode>
</env:Code>
그러나, 당신은 단지 500 HTTP 오류 코드가 반환되는 것을 볼 어쨌든,하지만 응용 프로그램 수준 (SOAP) 데이터에 대한 정교한 정보에 포함되어 있습니다 : 예를 들어, 다음은 HTTP 응답 포함하는 SOAP 오류 메시지의 머리입니다 어떻게 된 거예요.
궁극적으로, 귀하의 프로토콜에 대해 200 이외의 것을 사용할 것인지 결정하는 것은 최종 결정입니다. 혼자만의 500 오류 코드만으로도 오류를 완전히 전달할 수 있는지 클라이언트 요구 사항이 결정하므로 그 이유가 있습니다. 충분하다면 다른 것이 필요하지 않습니다. 그렇지 않은 경우 프로토콜을 고안하거나 SOAP 또는 REST와 같은 기존 프로토콜을 사용하십시오.
500 상태 코드를 반환하는 것과 동일한 예외가 발생하고 있습니까? 이 경우에 사용해야합니까? – Pranav
예외가'doPost' 메소드를 떠난다면 Tomcat이 500을 리턴 할 것입니다. 다시 말하지만, 이것은 내 견해로는 적절하지 않습니다. HTTP 200 응답의 본문에서 예외를 전달해야합니다.이 목적을 위해 형식을 고안하여 HTTP 200 응답으로 마무리하면됩니다. –
이 질문은 단일 답변이 아니기 때문에 프로그래머에게 문의하는 것이 좋습니다 .stackexchange.com. –