サーバーが非同期要求のステータスコード202 - Accepted
を返すときに、要求完了の見積もりを行う適切な方法は何ですか? HTTP spec(私によって追加イタリック体)からHTTPステータス202 - 非同期リクエストの完了に関する情報を提供する方法?
:
202受理
要求は処理のために受け入れられているが、処理は完了していません。 [...]
エンティティは、ステータスモニタ又はユーザが要求を満たすことが期待できる場合のいくつかの見積りに対するリクエストの現在のステータスの表示とポインタのいずれかを含むべきである。この応答で返されます。ここで
思考のいくつかされています
- 私はmax-ageディレクティブをちらっと見てきたが、それを使用して
Cache-Control
を濫用することでしょうか? - 応答本体の予想待ち時間を返しますか?
- アプリケーション固有の
X-
レスポンスヘッダーを追加しましたが、X-
ヘッダーは、RFC 6648で廃止されましたか? - (
X-
以外の)特定の応答ヘッダーを追加しますか?もしそうなら、どのようにそれを命名すべきですか? SOの質問Custom HTTP headers : naming conventionsはいくつかのアイデアを提供しましたが、非推奨の後では、HTTPヘッダがどのようにフォーマットされ、どのようにそれらの名前を付けられるべきかについてのみ回答します。 - その他のおすすめ?
値が"秒数の整数小数点以下の桁数)」を使用している場合、より良い解像度が必要な場合は、例えばXの値を持つ 'X-Retry-After'ヘッダ代わりにミリ秒が適切でしょうか? –
@JosipRodinカスタムヘッダーを作成するのではなく、 'Retry-After:0'を使うことをお勧めします。なぜなら、クライアントが何ミリ秒も過ぎた応答を得てすぐに再試行できるからです。非同期操作の場合、 'Retry-After:0'は「結果はまだ用意されていませんが、いつでも自由に質問できます」と思われます。 – Gili
@ギリしかし、私は彼らが望むときにいつでも彼らに質問したくない場合はどうしますか?たとえば、大量のクライアントが150ms離れている場合、1秒あたり6リクエストであり、毎秒2リクエストしか持たないという考えがあります。 –