15

「リクエストは問題ありませんが、まだ進行中です。まったく同じ場所ですぐに確認してください」という意味でクライアントに提供する最も適切なHTTPステータスコードは何ですか。

たとえば、クライアントが重いクエリを開始するための最初のリクエストを送信し、サーバーがすぐにURLを返し、クライアントが結果を定期的にポーリングできるとします。ジョブが完了する前にクライアントがこのURLを呼び出す場合、返すのに最も適切なHTTPステータスコードは何ですか?

202受け入れられるのは私の最初の衝動です。これは最高のものですか、それともRESTインターフェースでこの目的のためにより慣用的なものがありますか?

4

1 に答える 1

26

私にとって、202Acceptedが最善の方法です。

W3CWebサイトのドキュメントを参照してください。

10.2.3202承認済み

リクエストは処理のために受け入れられましたが、処理は完了していません。リクエストは、実際に処理が行われるときに許可されない可能性があるため、最終的に処理される場合とされない場合があります。このような非同期操作からステータスコードを再送信する機能はありません。

202の応答は、意図的に非コミットです。その目的は、サーバーへのユーザーエージェントの接続がプロセスが完了するまで持続することを必要とせずに、サーバーが他のプロセス(おそらく、1日に1回だけ実行されるバッチ指向のプロセス)の要求を受け入れることができるようにすることです。この応答で返されるエンティティには、要求の現在のステータスの表示と、ステータスモニターへのポインター、またはユーザーが要求の実行を期待できる時期の見積もりが含まれている必要があります。

于 2013-02-12T03:41:08.173 に答える