public interface ServerRequest
HandlerFunction
によって処理されるサーバー側の HTTP リクエストを表します。 ヘッダーと本文へのアクセスは、それぞれ ServerRequest.Headers
と body(BodyExtractor)
によって提供されます。
修飾子と型 | インターフェースと説明 |
---|---|
static interface | ServerRequest.Builder リクエストのビルダーを定義します。 |
static interface | ServerRequest.Headers HTTP リクエストのヘッダーを表します。 |
修飾子と型 | メソッドと説明 |
---|---|
default OptionalSE<ObjectSE> | attribute(StringSE name) リクエスト属性値が存在する場合は取得します。 |
MapSE<StringSE, ObjectSE> | attributes() リクエスト属性の可変マップを取得します。 |
<T> T | body(BodyExtractor<T,? super ServerHttpRequest> extractor) 指定された BodyExtractor で本体を抽出します。 |
<T> T | body(BodyExtractor<T,? super ServerHttpRequest> extractor, MapSE<StringSE, ObjectSE> hints) 指定された BodyExtractor とヒントを使用してボディを抽出します。 |
<T> reactor.core.publisher.Flux<T> | bodyToFlux(ClassSE<? extends T> elementClass) 本体を Flux に抽出します。 |
<T> reactor.core.publisher.Flux<T> | bodyToFlux(ParameterizedTypeReference<T> typeReference) 本体を Flux に抽出します。 |
<T> reactor.core.publisher.Mono<T> | bodyToMono(ClassSE<? extends T> elementClass) 本体を Mono に抽出します。 |
<T> reactor.core.publisher.Mono<T> | bodyToMono(ParameterizedTypeReference<T> typeReference) 本体を Mono に抽出します。 |
default reactor.core.publisher.Mono<ServerResponse> | checkNotModified(InstantSE lastModified) 提供された最終変更タイムスタンプ(アプリケーションによって決定)を使用して、リクエストされたリソースが変更されたかどうかを確認します。 |
default reactor.core.publisher.Mono<ServerResponse> | checkNotModified(InstantSE lastModified, StringSE etag) 提供された ETag (エンティティタグ)およびアプリケーションによって決定された最終変更タイムスタンプを指定して、リクエストされたリソースが変更されたかどうかを確認します。 |
default reactor.core.publisher.Mono<ServerResponse> | checkNotModified(StringSE etag) 提供された ETag (エンティティタグ)を使用して、アプリケーションによって決定された、リクエストされたリソースが変更されたかどうかを確認します。 |
MultiValueMap<StringSE, HttpCookie> | cookies() このリクエストの Cookie を取得します。 |
static ServerRequest | create(ServerWebExchange exchange, ListSE<HttpMessageReader<?>> messageReaders) 指定された ServerWebExchange およびメッセージリーダーに基づいて新しい ServerRequest を作成します。 |
ServerWebExchange | exchange() このリクエストのベースとなる Web エクスチェンジを取得します。 |
reactor.core.publisher.Mono<MultiValueMap<StringSE, StringSE>> | formData() Content-Type が "application/x-www-form-urlencoded" の場合はリクエストの本文からフォームデータを取得し、それ以外の場合は空のマップを取得します。 |
static ServerRequest.Builder | from(ServerRequest other) メッセージリーダー、メソッド名、URI、ヘッダー、Cookie、指定されたリクエストの属性を使用してビルダーを作成します。 |
ServerRequest.Headers | headers() このリクエストのヘッダーを取得します。 |
OptionalSE<InetSocketAddressSE> | localAddress() このリクエストが接続されているローカルアドレスを取得します(利用可能な場合)。 |
ListSE<HttpMessageReader<?>> | messageReaders() このリクエストの本文の変換に使用されるリーダーを取得します。 |
default HttpMethod | method() HTTP メソッドを取得します。 |
StringSE | methodName() HTTP メソッドの名前を取得します。 |
reactor.core.publisher.Mono<MultiValueMap<StringSE, Part>> | multipartData() Content-Type が "multipart/form-data" の場合はマルチパートリクエストのパーツを取得し、それ以外の場合は空のマップを取得します。 |
default StringSE | path() リクエストパスを取得します。 |
default PathContainer | pathContainer() 使用すべきではありません。 5.3 の時点で、 requestPath() を推奨 |
default StringSE | pathVariable(StringSE name) 指定された名前のパス変数があれば、それを取得します。 |
MapSE<StringSE, StringSE> | pathVariables() このリクエストのすべてのパス変数を取得します。 |
reactor.core.publisher.Mono<? extends PrincipalSE> | principal() リクエストに対して認証されたユーザーを取得します(存在する場合)。 |
default OptionalSE<StringSE> | queryParam(StringSE name) 存在する場合、指定された名前を持つ最初のクエリパラメーターを取得します。 |
MultiValueMap<StringSE, StringSE> | queryParams() このリクエストのすべてのクエリパラメーターを取得します。 |
OptionalSE<InetSocketAddressSE> | remoteAddress() 可能な場合、このリクエストが接続されているリモートアドレスを取得します。 |
default RequestPath | requestPath() リクエストパスを PathContainer として取得します。 |
reactor.core.publisher.Mono<WebSession> | session() このリクエストの Web セッションを取得します。 |
URISE | uri() リクエスト URI を取得します。 |
UriBuilder | uriBuilder() この ServerRequest に関連付けられた URI から UriBuilderComponents を取得します。 |
@Nullable default HttpMethod method()
null
(たとえば非標準の HTTP メソッドの場合)StringSE methodName()
URISE uri()
UriBuilder uriBuilder()
ServerRequest
に関連付けられた URI から UriBuilderComponents
を取得します。 注意 : 5.1 以降、このメソッドは、クライアントが発信したアドレスを指定する "Forwarded"
および "X-Forwarded-*"
ヘッダーを無視します。ForwardedHeaderFilter
を使用して、このようなヘッダーを抽出して使用するか、破棄することを検討してください。
default StringSE path()
@DeprecatedSE default PathContainer pathContainer()
requestPath()
を推奨 PathContainer
として取得します。default RequestPath requestPath()
PathContainer
として取得します。ServerRequest.Headers headers()
MultiValueMap<StringSE,HttpCookie> cookies()
OptionalSE<InetSocketAddressSE> remoteAddress()
OptionalSE<InetSocketAddressSE> localAddress()
ListSE<HttpMessageReader<?>> messageReaders()
<T> T body(BodyExtractor<T,? super ServerHttpRequest> extractor)
BodyExtractor
で本体を抽出します。T
- 返される本体の型 extractor
- リクエストから読み取る BodyExtractor
body(BodyExtractor, Map)
<T> T body(BodyExtractor<T,? super ServerHttpRequest> extractor, MapSE<StringSE,ObjectSE> hints)
BodyExtractor
とヒントを使用してボディを抽出します。T
- 返される本体の型 extractor
- リクエストから読み取る BodyExtractor
hints
- ボディ抽出のカスタマイズに使用する Jackson2CodecSupport.JSON_VIEW_HINT
などのヒントのマップ <T> reactor.core.publisher.Mono<T> bodyToMono(ClassSE<? extends T> elementClass)
Mono
に抽出します。T
- 要素型 elementClass
- Mono
の要素のクラス <T> reactor.core.publisher.Mono<T> bodyToMono(ParameterizedTypeReference<T> typeReference)
Mono
に抽出します。T
- 要素型 typeReference
- 予期されるレスポンスリクエスト型を説明する型参照 T
の本体を含む mono <T> reactor.core.publisher.Flux<T> bodyToFlux(ClassSE<? extends T> elementClass)
Flux
に抽出します。T
- 要素型 elementClass
- Flux
の要素のクラス <T> reactor.core.publisher.Flux<T> bodyToFlux(ParameterizedTypeReference<T> typeReference)
Flux
に抽出します。T
- 要素型 typeReference
- 予想されるリクエスト本文の型を説明する型参照 T
の本体を含むフラックス default OptionalSE<ObjectSE> attribute(StringSE name)
name
- 属性名 default OptionalSE<StringSE> queryParam(StringSE name)
name
- パラメーター名 MultiValueMap<StringSE,StringSE> queryParams()
default StringSE pathVariable(StringSE name)
name
- 変数名 IllegalArgumentExceptionSE
- 指定された名前のパス変数がない場合 reactor.core.publisher.Mono<WebSession> session()
クライアントからリクエストされたセッション ID と一致するか、クライアントがインスタンスを指定しなかったため、または基になるセッションが期限切れになったために新しいセッション ID でインスタンスを返すことが常に保証されています。
このメソッドを使用しても、セッションは自動的には作成されません。
reactor.core.publisher.Mono<? extends PrincipalSE> principal()
reactor.core.publisher.Mono<MultiValueMap<StringSE,StringSE>> formData()
"application/x-www-form-urlencoded"
の場合はリクエストの本文からフォームデータを取得し、それ以外の場合は空のマップを取得します。 注意 : このメソッドを呼び出すと、リクエストの本文が完全に読み取られて解析され、結果の MultiValueMap
がキャッシュされるため、このメソッドを複数回呼び出しても安全です。
reactor.core.publisher.Mono<MultiValueMap<StringSE,Part>> multipartData()
"multipart/form-data"
の場合はマルチパートリクエストのパーツを取得し、それ以外の場合は空のマップを取得します。 注意 : このメソッドを呼び出すと、リクエストの本文が完全に読み取られて解析され、結果の MultiValueMap
がキャッシュされるため、このメソッドを複数回呼び出しても安全です。
ServerWebExchange exchange()
メモ: (ServerRequest
および ServerResponse
で提供されるメソッドを使用する代わりに)交換を直接操作すると、不規則な結果が生じる可能性があります。
default reactor.core.publisher.Mono<ServerResponse> checkNotModified(InstantSE lastModified)
変更されていない場合、このメソッドは対応するステータスコードとヘッダーを含むレスポンスを返し、それ以外の場合は空の結果を返します。
典型的な使用箇所:
public Mono<ServerResponse> myHandleMethod(ServerRequest request) { Instant lastModified = // application-specific calculation return request.checkNotModified(lastModified) .switchIfEmpty(Mono.defer(() -> { // further request processing, actually building content return ServerResponse.ok().body(...); })); }
このメソッドは、条件付きの GET/HEAD リクエストで機能しますが、条件付きの POST/PUT/DELETE リクエストでも機能します。
注意 : この #checkNotModified(Instant)
メソッドのいずれかを使用できます。または checkNotModified(String)
。HTTP 仕様で推奨されているように、強力なエンティティタグと Last-Modified 値の両方を適用する場合は、checkNotModified(Instant, String)
を使用する必要があります。
lastModified
- アプリケーションが基礎となるリソースについて決定した最終変更のタイムスタンプ default reactor.core.publisher.Mono<ServerResponse> checkNotModified(StringSE etag)
ETag
(エンティティタグ)を使用して、アプリケーションによって決定された、リクエストされたリソースが変更されたかどうかを確認します。変更されていない場合、このメソッドは対応するステータスコードとヘッダーを含むレスポンスを返し、それ以外の場合は空の結果を返します。
典型的な使用箇所:
public Mono<ServerResponse> myHandleMethod(ServerRequest request) { String eTag = // application-specific calculation return request.checkNotModified(eTag) .switchIfEmpty(Mono.defer(() -> { // further request processing, actually building content return ServerResponse.ok().body(...); })); }
このメソッドは、条件付きの GET/HEAD リクエストで機能しますが、条件付きの POST/PUT/DELETE リクエストでも機能します。
注意 : この checkNotModified(Instant)
メソッドのいずれかを使用できます。または #checkNotModified(String)
。HTTP 仕様で推奨されているように、強力なエンティティタグと Last-Modified 値の両方を適用する場合は、checkNotModified(Instant, String)
を使用する必要があります。
etag
- アプリケーションが基になるリソースに対して決定したエンティティタグ。このパラメーターには、必要に応じて引用符(")が埋め込まれます。default reactor.core.publisher.Mono<ServerResponse> checkNotModified(InstantSE lastModified, StringSE etag)
ETag
(エンティティタグ)およびアプリケーションによって決定された最終変更タイムスタンプを指定して、リクエストされたリソースが変更されたかどうかを確認します。変更されていない場合、このメソッドは対応するステータスコードとヘッダーを含むレスポンスを返し、それ以外の場合は空の結果を返します。
典型的な使用箇所:
public Mono<ServerResponse> myHandleMethod(ServerRequest request) { Instant lastModified = // application-specific calculation String eTag = // application-specific calculation return request.checkNotModified(lastModified, eTag) .switchIfEmpty(Mono.defer(() -> { // further request processing, actually building content return ServerResponse.ok().body(...); })); }
このメソッドは、条件付きの GET/HEAD リクエストで機能しますが、条件付きの POST/PUT/DELETE リクエストでも機能します。
lastModified
- アプリケーションが基礎となるリソースについて決定した最終変更のタイムスタンプ etag
- アプリケーションが基になるリソースに対して決定したエンティティタグ。このパラメーターには、必要に応じて引用符(")が埋め込まれます。static ServerRequest create(ServerWebExchange exchange, ListSE<HttpMessageReader<?>> messageReaders)
ServerWebExchange
およびメッセージリーダーに基づいて新しい ServerRequest
を作成します。exchange
- 交換 messageReaders
- メッセージリーダー ServerRequest
static ServerRequest.Builder from(ServerRequest other)
other
- メッセージリーダー、メソッド名、URI、ヘッダー、属性をコピーするリクエスト