0

クライアントがファイルをアップロードできるAPIを公開しているWebサーバーがあります。そのファイルがサーバーで読み取られ、特定の処理が行われ、ステータスコード200のhttp応答が生成されます。ただし、間違った形式のデータを含むファイルがサーバーによって受信される場合があります。このケースはどのように処理する必要がありますか?例外を発生させることによって、または400の不正な要求を返すことによって?

編集 -

500ステータスコードを返すのと同等の例外をスローしますか?この場合、これを使用する必要がありますか?

4

1 に答える 1

1

私の意見では、アプリケーションレベルの問題をクライアントに報告するために200以外のコードを使用するべきではありません。これらのコードは、純粋にHTTPレベルの機能のために予約されています。

200個のコードを返し、アプリケーションレベルのエラーコード/メッセージ/その他をHTTP応答本文に配置するのが賢明です。

ただし、アプリケーションレベルの障害を通信するために500コードを使用するプロトコルが少なくとも1つあります。それはSOAPです。たとえば、SOAP障害メッセージを含むHTTP応答のヘッドは次のとおりです。

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)データが何が起こったかについての詳細な情報とともに含まれていることがわかります。

最終的には、プロトコルに200以外のものを使用するかどうかを決定するのはあなた次第です。クライアントの要件によって、エラーを完全に伝達するのに500エラーコードだけで十分かどうかが決まります。その理由は次のとおりです。それで十分であれば、他に何も必要ありません。そうでない場合は、プロトコルを考案するか、SOAPやRESTなどの既存のプロトコルを使用することをお勧めします。

于 2011-11-09T16:07:30.747 に答える