たとえば、Ajaxリクエストを行う場合、jQueryには次の2つの特定のコールバックがあります。
success
:200/2xxステータスコードが応答とともに配信されたときに発生します。
error
:4xx、5xxなどのステータスコードが応答で返されたときに発生します。
ユーザーが新しい「Person」オブジェクトを作成しようとすると、成功時に新しく作成されたオブジェクトのJSON表現が返され、新しいオブジェクトに必要な一意のIDなどへのJavaScriptアクセスが提供されます。これはもちろん送信されます200ステータスコード。
ユーザーが不正な形式または無効なデータ(たとえば、無効/不完全な「名前」フィールド)を送信した場合、JSONを介して検証エラーメッセージを返信します。 (これが悪いことになる理由はわかりません)。
私の質問は:そうすることで、無効なデータを正常に処理したので2ステータスコードを送信する必要がありますか?したがって、私はjQuery success
コールバックを使用しますが、エラーを確認するだけです...
または、4xxステータスコードを使用する必要があります。おそらく「不良リクエスト」です。送信されたデータが無効であるためです。 (したがって、error
コールバックを使用して、必要なクライアント側通知を実行します)。
400 Bad Request応答に同意します。
インスピレーションを得るために、Twitter(広く使用されているJSONサービス)がこれをどのように実行するかを確認できます。 https://dev.Twitter.com/overview/api/response-codes
Code
Text
説明200
OK
-成功しました!304
Not Modified
-返す新しいデータはありませんでした。400
Bad Request
-リクエストが無効であるか、他の方法で提供できない。付随するエラーメッセージでさらに説明します。認証のない要求は無効と見なされ、この応答が返されます。401
Unauthorized
-認証資格情報がないか、正しくありません。他の状況でも返されます(たとえば、API v1エンドポイントへのすべての呼び出しは401を返します)。403
Forbidden
-リクエストは理解されましたが、拒否されたか、アクセスが許可されていません。付随するエラーメッセージで理由が説明されます。このコードは、更新の制限によりリクエストが拒否された場合に使用されます。このステータスが返される他の理由は、以下の表の応答コードとともにリストされています。404
Not Found
-リクエストされたURIが無効であるか、リクエストされたユーザーなどのリソースが存在しません。また、要求された形式が要求されたメソッドでサポートされていない場合にも返されます。406
Not Acceptable
-リクエストで無効な形式が指定された場合に返されます。410
Gone
-このリソースはなくなりました。 APIエンドポイントがオフになっていることを示すために使用されます。420
Enhance Your Calm
アプリケーションがレート制限されているときに返されます。422
Unprocessable Entity
-POST account/update_profile_bannerにアップロードされた画像を処理できない場合に返されます。429
Too Many Requests
-リソースのアプリケーションのレート制限を使い果たしたためにリクエストを処理できない場合に返されます。レート制限を参照してください。500
Internal Server Error
=何かが壊れています。他のユーザーが同様の問題を抱えている場合に備えて、リクエストの詳細を含めて開発者フォーラムに投稿してください。502
Bad Gateway
-Twitterがダウンしているか、アップグレード中です。503
Service Unavailable
-Twitterサーバーは稼働していますが、リクエストで過負荷になっています。あとでもう一度試してみてください。504
Gateway Timeout
-Twitterサーバーは稼働していますが、スタック内で何らかの障害が発生したため、リクエストを処理できませんでした。あとでもう一度試してみてください。私はjsonの何が問題だったかについての情報とともに、「400 Bad Request」ヘッダーを返送します。次に、jquerys $ .ajaxError()イベントハンドラーでイベントをキャッチし、返されたエラーメッセージを解析して、エンドユーザーに適切なフィードバックを提供します。
AjaxErrorイベントハンドラの詳細については、 here !を参照してください。