私は大規模なWebアプリケーションを開発中です。プロジェクト内では、外部のクライアント用にRESTアプリケーションを開発中です。私は、この質問は、私が使用している特定の技術とあまり関係ないと思いますが、ちょうどその場合 - Djangoです。RESTアプリケーションのバックエンド例外処理 - 4XXエラーまたはエラーマーク付きの200を返します。
私たちは、リソースは常に状況(200、201、403、など...)
とともにタイプ{'success': <value>,
'object': <value>
'error_msg': <value>,
}
の標準JSONオブジェクトを返すREST開発チームで大会を持っていますsuccess
パラメータは、リソースの展開を成功のためのtrue
が割り当てられ
return Response({'success': true,
'object': ...,
'error_msg': ...},
status=status.HTTP_200_OK)
、および0:
Djangoの実装の例それ以外の場合はです。
ここでの質問全体は、悪いことが起こった場合の適切な4XXコードまたは200?の場合にstatus
パラメータに渡されるべきものです。開発チームは、何か悪いことが起こった場合はいつもHTTP_200_OK
を使用するよう提案しています。ただちにsuccess
にfalseを割り当ててください。 error_msg
には、例外の場合に詳細なエラーメッセージが含まれます。
だから私は、対この
return Response({'success': false,
'object': ...,
'error_msg': 'Details regarding the error'},
status=status.HTTP_400_BAD_REQUEST)
のような右のいずれかを見て選ぶことができないうちの2つの選択肢:
return Response({'success': false,
'object': ...,
'error_msg': 'Details regarding the error'},
status=status.HTTP_200_OK)
(両方のケースでsuccess
がfalse
に等しくなり、両方でそう。場合は、status
を確認することなく、success
を見て何かが間違っていたことを開発者は知っているでしょう
しかし、非常に異なるerror codesは、人々がさまざまなエラーコードを思いついた理由について私が何か不足しているという不愉快な疑いを私に残す。そして、何らかの事態で私のプロジェクトがいつも同じ200
ステータスコードを返すと問題に直面することがあります。たくさんの資料を読んだら、適切なエラーステータスコードを指定すると、200ステータスを返すアプローチよりも優れたパフォーマンスが得られるのですか?