[9] [CODE(HTTP)@en[[[Prefer:]]]] [[ヘッダー]]の値 [DFN[[CODE(HTTP)@en[[[respond-async]]]]]]
は、最終的な処理の完了を待たずに[[非同期的]]に[[最後の応答]]を返すべきことを示します。

* 仕様書

[REFS[
- [3] '''[CITE@en[RFC 7240 - Prefer Header for HTTP]] ([TIME[2014-07-26 04:24:01 +09:00]] 版) <https://tools.ietf.org/html/rfc7240#section-4.1>'''
- [1] [CITE@en[RFC 7240 - Prefer Header for HTTP]] ([TIME[2014-07-26 04:24:01 +09:00]] 版) <https://tools.ietf.org/html/rfc7240#section-2>
- [12] [CITE[OData Version 4.0 Part 1: Protocol Plus Errata 01]] ([TIME[2014-09-04 16:00:00 +09:00]] 版) <http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part1-protocol.html#_Toc370374813>
]REFS]

* 意味

[4] [[好み]] [CODE(HTTP)@en[[[respond-async]]]] は、
[[鯖]]が[[非同期的]]に[[応答]]を送信することを[[クライアント]]が好むことを示します
[SRC[>>3]]。

* 構文

[6] 値や[[引数]]は無い [SRC[>>3]] ものとして定義されています。

* 処理

[7] [[鯖]]は、[[非同期的]]に[[応答]]を返す場合には [CODE(HTTP)[[[202]]]] [[応答]]を送信することができます。

[8] [CODE(HTTP)[[[202]]]] をいつどのように使うかは仕様の範囲外 [SRC[>>3]] とされています。

[EG[
[5] 例えば[[鯖]]は[[応答]]の[[生成]]に一定の閾値以上の時間がかかる時は、
[CODE(HTTP)@en[[[Prefer:]] [[respond-async]]]] に従って [CODE(HTTP)[[[202]]]]
[[応答]]を返すことができます [SRC[>>3]]。
]EG]

[2] [[串]]は [CODE(HTTP)@en[[[Prefer:]] [[respond-async]]]] を独自に処理して構いません。
[[起源鯖]]の[[応答]]を待たずに [CODE(HTTP)[[[202]]]] [[応答]]を返すことができます。 [SRC[>>1]]

[10] [CODE(HTTP)@en[[[Prefer:]] [[wait]]]] が指定されている場合、
その指定[[秒]]数以内に[[応答]]を返せない時に [CODE(HTTP)[[[202]]]]
を返しつつ[[非同期的]]に処理を続けられます。
[SEE[ [CODE(HTTP)@en[[[wait]]]] ]]

* 文脈

[13] [[プッシュ資源]]
([[プッシュメッセージの送信]])
で使えます。
元の [[RFC 7240]]
のニュアンスでは時間がかかる[[応答]]を待たずに別の方法で[[非同期的]]に結果を受け取るために使うものです
[WEAK[(ということは結果は要らないからすぐに[[応答]]を返してほしいためにも使い得ます。)]]
が、
[[プッシュ資源]]では通常結果を受け取らないところ、敢えて[[非同期的]]に結果を受け取ることを希望するために使います。
同じ「[[非同期的]]に結果を受け取りたい」表明でも、意味するところはかなり違います。

[203] [CITE[OData Version 4.0 Part 1: Protocol Plus Errata 01]]
( ([TIME[2014-09-04 16:00:00 +09:00]] 版))
<http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part1-protocol.html#_Toc399426736>

[204] [CITE[OData Version 4.0 Part 1: Protocol Plus Errata 01]]
( ([TIME[2014-09-04 16:00:00 +09:00]] 版))
<http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part1-protocol.html#_Toc393958809>

* 関連

[11] [CODE(HTTP)@en[[[respond-async]]]] が指定されている時には、
[CODE(HTTP)@en[[[odata.callback]]]] も指定できます [SRC[>>12]]。

* 歴史

[205] [CITE@en[draft-thomson-http-nice-01 - Marking HTTP Requests as Unimportant]]
( ([TIME[2014-10-16 11:48:17 +09:00]] 版))
<http://tools.ietf.org/html/draft-thomson-http-nice-01#section-2.3>