2017-09-29 9 views
0

Flask + PythonでGETまたはPOSTリクエストで渡された無効なパラメータを処理する最善の方法は?Flask + Pythonで無効なGET/POST要求パラメータを処理する最も良い方法は?

Flask + Pythonを使ってGET要求を処理するのは、整数でなければならないパラメータを必要としますが、クライアントはそれを整数として解釈できない値として提供します。したがって、明らかに、そのパラメータを整数に変換しようとすると例外がスローされます。

私の例外は、その例外を伝播させて、FlaskにクライアントのHTTPステータスコード500を返すというデフォルトの処理をさせるべきですか?または、私はそれを処理して、適切な(IMO)ステータスコード400をクライアントに返す必要がありますか?

最初のオプションは、2つのオプションのほうが簡単です。欠点は、その結果のエラーは、ここでは誰が障害しているかについて明確ではないということです。システム管理者はログを見て、PythonやFlaskについて何も知らないと、コードにバグがあると判断するかもしれません。しかし、私が400を返すと、問題がクライアント側にある可能性がより明確になります。

このような状況でほとんどの人は何をしますか?

+0

Zen of Pythonから: "エラーは決して黙ってはいけません。 明示的にサイレントにしない限り。 –

答えて

1

HTTP 400は私にとっては良いようです。

この場合、500を返すのは間違っています。クライアントに情報を提供せず、問題はクライアントではなくサーバであると仮定します。

無効な値(または問題があったもの)でパラメーターを識別する本文を400応答に追加することを妨げるものは何もありません。クライアントが受け入れる表現を使用します(例:あなたはREST APIをほとんど見れば、ユーザは異なるタイプのリクエストパラメータを送信する場合、彼らが戻ってクライアントに400と適切なエラーメッセージが返されます

{"error": "parameter age: positive integer required"} 
1

:それはAPIだ場合は、JSONレスポンスを返すことがあります予想よりも。 したがって、2番目のオプションを使用してください。

1

ステータスコード400は、クライアントに「やあ、あなたはうんざりしました、もう一度やり直さないでください」と指示することを意味します。ステータスコード500は、クライアントに「やあ、私はうんざりしましたが、後で私がそのバグを修正したときに再度お試しください」と伝えます。

あなたの場合、障害のある当事者がクライアントであるため、400を返す必要があります。

関連する問題