0

우리는 클라이언트가 파일을 업로드 할 수있는 api를 노출 한 웹 서버를 가지고 있습니다. 이 파일은 서버에서 읽히고 특정 처리가 수행되며 상태 코드 200이있는 http 응답이 생성됩니다. 그러나 때로는 잘못된 형식의 데이터가있는 파일이 서버에 수신됩니다. 이 사건을 어떻게 처리해야합니까? 예외를 발생 시키거나 400 나쁜 요청을 반환함으로써?클라이언트가 게시 한 파일의 데이터 형식이 잘못된 경우 웹 서버가 http 요청을 처리하는 방법은 무엇입니까?

EDIT -

500 상태 코드를 반환하는 것과 동일한 예외가 발생하고 있습니까? 이 경우에 사용해야합니까?

답변

1

제 생각에는 클라이언트에 응용 프로그램 수준의 문제를보고하는 데 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와 같은 기존 프로토콜을 사용하십시오.

+0

500 상태 코드를 반환하는 것과 동일한 예외가 발생하고 있습니까? 이 경우에 사용해야합니까? – Pranav

+0

예외가'doPost' 메소드를 떠난다면 Tomcat이 500을 리턴 할 것입니다. 다시 말하지만, 이것은 내 견해로는 적절하지 않습니다. HTTP 200 응답의 본문에서 예외를 전달해야합니다.이 목적을 위해 형식을 고안하여 HTTP 200 응답으로 마무리하면됩니다. –

+0

이 질문은 단일 답변이 아니기 때문에 프로그래머에게 문의하는 것이 좋습니다 .stackexchange.com. –