REST API を作成していて、問題に遭遇しました。検証エラーを返す最良の方法は何ですか。
これまで、一般的なエラー コードにダンプされたエラー メッセージを返してきました (たとえば、不適切な要求としましょう)。
{
"status": 400,
"error": {
"code": 1, // General bad request code
"message": [
"The Key \"a\" is missing",
"The Key \"b\" is missing",
"The Key \"c\" is missing",
"Incorrect Format for field \"y\""
]
}
)
適切な API 応答がどのように見えるべきかについてもう少し調査した結果、次のオプションを考えました。
最初に発生したエラーで停止し、特定のエラー コードを含む応答を返します
{ "status": 400, //Same as the HTTP header returned "error" { "code": 1, // Specific field validation error code "message": "Field \"x\" is missing from the array structure", "developer_message": "The request structure must contain the following fields {a,b,c{x,y,z}}", "more_info" => "www.api.com/help/errors/1" } )
すべてのリクエスト データを解析し、複数のフィールド検証エラーを返します。
{ "status": 400, "error": { "code": 1 //General bad Request code "message": "Bad Request", "developer_message": "Field validation errors." "more_info": "www.api.com/help/errors/1", "error_details": { 0: { "code": 2 // Specific field validation error code "message": "Field \"x\" is missing from the array structure", "developer_message": "The request structure must contain the following fields {a,b,c{x,y,z}}", "more_info": "www.api.com/help/errors/2" }, 1: { "code": 3 // Specific field validation error code "message": "Incorrect Format for field \"y\"", "developer_message": "The field \"y\" must be in the form of \"Y-m-d\"", "more_info": "www.api.com/help/errors/3" } } } }
私の意見では、オプション 2 が正しい方法です (開発者/エンド ユーザーにより有用な情報が提供され、サーバーの負荷が低くなる可能性があります (リクエストが少ない/有効なデータを再検証する必要がない/署名を計算してユーザーを認証する必要がない) ))、しかし、ベストプラクティスとは何か、この種の問題を処理する別の方法があるかどうかをさまよっています。
また、スクリプトのフローで致命的なエラーが 1 つ発生した場合でも、オプション 1 は有効だと思います (検証エラーではありません)。
コードは簡単に理解できるように単純な配列であることに注意してください。応答形式は JSON または XML になります。