2017-02-16 2 views
0

Web API内でエラーを返すことに関して質問があります。このWeb APIは、通常javascript(ウェブサイト)から呼び出されます。 エラーを返す可能性は2つあります.1つは文字列として返し、もう1つは整数エラーコードとして返します。Web APIのエラーを返す:エラー整数コードまたはエラー文字列?

エラーコードとしてエラーを返す例JSON:

{ 
    "status" : "Error", 
    "error" : 30 
} 

例JSONを返すエラーのエラー文字列として:あなたが最善のアプローチは何だと思います

{ 
    "status" : "Error", 
    "error" : "ERR_INVALID_FILENAME" 
} 

?私は、次の理由により、エラー文字列の選択が優れていると考えています:

  • エラー文字列の選択は、コードをコメント自己を誘導することにより、コードの可読性と保守性を向上させます。 エラーコードのアプローチでは、JavaScriptのDEVが記述しているが、導入されたバージョン:エラー文字列のアプローチで

    if (result.error == 30) { do something related to files and invalidness...}

    、JavaScriptのDEVは記述します

    if (result.error == "ERR_INVALID_FILENAME") { do something related to files and invalidness...}

  • をグランドにブラウザのレンダリング、HTMLのDOM操作、AJAX HTTPリクエストの処理など、この小さなエラー文字列のチェックは重要ではありません。 C++やC#のアプリケーションでは、明らかに列挙型を使用していますが、Web APIやWebサイトなどの2つの別個のエンティティでは選択肢がありません。

ありがとうございました。

+0

私はあなたの言うことに同意しますが、この質問はソフトウェアエンジニアリングの方がうまくいくかもしれません。 – jorgonor

+0

@ Itay解決方法はありますか? –

+0

@JoseFrancis 2つの意見だけで、この質問に対する回答がもっとあることを願っています。 最近追加された追加の1つの追加情報は、APIでは、JSON化されたときに文字列化されていてもエラーが列挙型に存在する必要があり、厳密に型付けされている必要がありますコンパイル時に)。 –

答えて

0
  1. 私は複数のリクエストに対して同じエラーメッセージが表示される可能性があります。エラー列挙型、辞書型、リスト型(multilangugeが必要な場合)のstructutreを使用できます。
  2. エラーコードからメッセージ(偶数タイプ、レベル)まで、ある種のトランスレータを使用できます。もっと多くのメッセージが必要になる状況はたくさんあります。おそらくあなたはfreindlyメッセージとデバッグメッセージを持っているでしょう。多分あなたはそれがブロッキングmsgであると言うだけの何らかの種類が必要であり、それは警告です。

  3. エラーを文字列としてクライアントに送信し、jsonサイズが増加する(マッサージの長さにもよります)か、プリロードエラーをjsにマップしてコードをメッセージに変換することができます。再び依存していますが)クライアント側はそれを行うために動作します。 jsに移動するときにブラウザのメモリ制限に注意してください。

0

文字列オプションは、コードの観点から好ましいと十分ですし、別にそのからエラーを処理し、JSで適切なメッセージを表示、「文字列または整数エラー・コード」のご質問に答えるためには計上することができませんでしたコストまたはオーバーヘッドとして

改良点として、200 for success and 400 for bad requestなどの適切なHTTPステータスコードをアプリケーション全体で汎用目的で送信できることをお勧めします。

クライアントアプリケーションでAPIからの特定のエラーを検出する場合は、エラーステータスとコードを含むモデルをHttpResponseMessage()の「データ部分」に含めることができます。そのため、必ずしもエラーコードを確認してください。