28

202 - Acceptedサーバーが非同期リクエストのステータス コードを返したときに、リクエストの完了を推定する適切な方法は何ですか?

HTTP 仕様から(イタリック体は私が追加):

202 承認済み

リクエストは処理のために受け入れられましたが、処理は完了していません。[...]

この応答で返されるエンティティには、要求の現在のステータスの表示と、ステータス モニターへのポインター、またはユーザーがいつ要求が満たされると期待できるかの推定値のいずれかを含める必要があります。

ここにいくつかの考えがあります:

  • max-ageディレクティブをちらっと見ましたが、それを使用すると悪用されCache-Controlますか?
  • 応答本文で予想される待機時間を返しますか?
  • X-アプリケーション固有の応答ヘッダーを追加しますが、ヘッダーはRFC 6648X-で廃止されましたか?
  • (非X-) 特定の応答ヘッダーを追加しますか? もしそうなら、それはどのように命名されるべきですか?SO の質問カスタム HTTP ヘッダー : 命名規則はいくつかのアイデアを提供しましたが、非推奨になった後は、HTTP ヘッダーがどのようにフォーマットされているかについてのみ回答し、どのように名前を付ける必要があるかについては回答しません。
  • 他の提案?
4

3 に答える 3

15

これには、既存の HTTP ヘッダーを絶対に悪用しないでください。これは独自のサーバーであるため、応答がどのように見えるかを定義できます。この情報の意図した受信者に最適な応答を選択し、応答本文で実際の情報を返すことができます (また、選択する必要があります)。

たとえば、人間が判読できるメッセージを表示することのみに関心がある場合は、text/plain「あなたのリクエストは 30 分以内に処理される可能性があります。」と返すことができます。

スペクトルの反対側では、おそらく次のようにフォーマットされた、REST の方法をすべて使用して戻りたい場合がありますapplication/json(私は完全にその場でこれを作り上げました)。

{
  "status": "pending",
  "completion": {
    "estimate": "Thu Sep 08 2011 12:00:00 GMT-0400",
    "rejected-after": "Fri Sep 09 2011 12:00:00 GMT-0400",
  },
  "tracking": {
    "url": "http://server/status?id=myUniqueId"
  }
}
于 2013-02-12T13:29:51.727 に答える
13

ヘッダーを使用してLocation、ステータス モニターの URL を指定できます。現在のステータスや見積もりなどは、カスタム ヘッダー (独自のソフトウェア以外は使用しない) または応答本文 (少なくとも Web ブラウザーがユーザーに表示する) に含めることができます。

于 2013-02-12T13:31:47.467 に答える
6

202 - Accepted応答コードについて特に明示的に言及されていませんが、Retry-Afterヘッダーは適切なオプションのようです。ドキュメントから:

Retry-After 応答ヘッダー フィールドを使用して [...] 、要求しているクライアントがサービスを利用できないと予想される期間を示すことができます。

于 2013-03-27T09:51:01.890 に答える