インターフェース ServerRequest
- すべての既知の実装クラス:
MockServerRequest
,ServerRequestWrapper
HandlerFunction
によって処理されるサーバー側の HTTP リクエストを表します。 ヘッダーと本文へのアクセスは、それぞれ ServerRequest.Headers
と body(BodyExtractor)
によって提供されます。
- 導入:
- 5.0
- 作成者:
- Arjen Poutsma, Sebastien Deleuze
ネストされたクラスのサマリー
ネストされたクラス修飾子と型インターフェース説明static interface
リクエストのビルダーを定義します。static interface
HTTP リクエストのヘッダーを表します。メソッドのサマリー
修飾子と型メソッド説明default OptionalSE<ObjectSE>
リクエスト属性値が存在する場合は取得します。リクエスト属性の可変マップを取得します。<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
(StringSE etag) 提供されたETag
(エンティティタグ)を使用して、アプリケーションによって決定された、リクエストされたリソースが変更されたかどうかを確認します。default reactor.core.publisher.Mono<ServerResponse>
checkNotModified
(InstantSE lastModified) 提供された最終変更タイムスタンプ(アプリケーションによって決定)を使用して、リクエストされたリソースが変更されたかどうかを確認します。default reactor.core.publisher.Mono<ServerResponse>
checkNotModified
(InstantSE lastModified, StringSE etag) 提供されたETag
(エンティティタグ)およびアプリケーションによって決定された最終変更タイムスタンプを指定して、リクエストされたリソースが変更されたかどうかを確認します。cookies()
このリクエストの Cookie を取得します。static ServerRequest
create
(ServerWebExchange exchange, ListSE<HttpMessageReader<?>> messageReaders) 指定されたServerWebExchange
およびメッセージリーダーに基づいて新しいServerRequest
を作成します。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、指定されたリクエストの属性を使用してビルダーを作成します。headers()
このリクエストのヘッダーを取得します。このリクエストが接続されているローカルアドレスを取得します(利用可能な場合)。このリクエストの本文の変換に使用されるリーダーを取得します。method()
HTTP メソッドを取得します。使用すべきではありません。reactor.core.publisher.Mono<MultiValueMap<StringSE,
Part>> Content-Type が"multipart/form-data"
の場合はマルチパートリクエストのパーツを取得し、それ以外の場合は空のマップを取得します。default StringSE
path()
リクエストパスを取得します。default PathContainer
使用すべきではありません。5.3 の時点で、requestPath()
を推奨default StringSE
pathVariable
(StringSE name) 指定された名前のパス変数があれば、それを取得します。このリクエストのすべてのパス変数を取得します。reactor.core.publisher.Mono<? extends PrincipalSE>
リクエストに対して認証されたユーザーを取得します(存在する場合)。default OptionalSE<StringSE>
queryParam
(StringSE name) 存在する場合、指定された名前を持つ最初のクエリパラメーターを取得します。このリクエストのすべてのクエリパラメーターを取得します。可能な場合、このリクエストが接続されているリモートアドレスを取得します。default RequestPath
リクエストパスをPathContainer
として取得します。reactor.core.publisher.Mono<WebSession>
session()
このリクエストの Web セッションを取得します。uri()
リクエスト URI を取得します。このServerRequest
に関連付けられた URI からUriBuilderComponents
を取得します。
メソッドの詳細
method
HttpMethod method()HTTP メソッドを取得します。methodName
使用すべきではありません。6.0 現在、method()
を推奨HTTP メソッドの名前を取得します。- 戻り値:
- 文字列としての HTTP メソッド
uri
URISE uri()リクエスト URI を取得します。uriBuilder
UriBuilder uriBuilder()このServerRequest
に関連付けられた URI からUriBuilderComponents
を取得します。注意 : 5.1 以降、このメソッドは、クライアントが発信したアドレスを指定する
"Forwarded"
および"X-Forwarded-*"
ヘッダーを無視します。ForwardedHeaderFilter
を使用して、このようなヘッダーを抽出して使用するか、破棄することを検討してください。- 戻り値:
- URI ビルダー
path
リクエストパスを取得します。pathContainer
使用すべきではありません。5.3 の時点で、requestPath()
を推奨リクエストパスをPathContainer
として取得します。requestPath
リクエストパスをPathContainer
として取得します。- 導入:
- 5.3
headers
ServerRequest.Headers headers()このリクエストのヘッダーを取得します。cookies
MultiValueMap<StringSE,HttpCookie> cookies()このリクエストの Cookie を取得します。remoteAddress
OptionalSE<InetSocketAddressSE> remoteAddress()可能な場合、このリクエストが接続されているリモートアドレスを取得します。- 導入:
- 5.1
localAddress
OptionalSE<InetSocketAddressSE> localAddress()このリクエストが接続されているローカルアドレスを取得します(利用可能な場合)。- 導入:
- 5.2.3
messageReaders
ListSE<HttpMessageReader<?>> messageReaders()このリクエストの本文の変換に使用されるリーダーを取得します。- 導入:
- 5.1
body
指定されたBodyExtractor
で本体を抽出します。- 型パラメーター:
T
- 返される本体の型- パラメーター:
extractor
- リクエストから読み取るBodyExtractor
- 戻り値:
- 抽出されたボディ
- 関連事項:
body
指定されたBodyExtractor
とヒントを使用してボディを抽出します。- 型パラメーター:
T
- 返される本体の型- パラメーター:
extractor
- リクエストから読み取るBodyExtractor
hints
- ボディ抽出のカスタマイズに使用するJackson2CodecSupport.JSON_VIEW_HINT
などのヒントのマップ- 戻り値:
- 抽出されたボディ
bodyToMono
本体をMono
に抽出します。- 型パラメーター:
T
- 要素型- パラメーター:
elementClass
-Mono
の要素のクラス- 戻り値:
- mono としての本体
bodyToMono
本体をMono
に抽出します。- 型パラメーター:
T
- 要素型- パラメーター:
typeReference
- 予期されるレスポンスリクエスト型を説明する型参照- 戻り値:
- 指定された型
T
の本体を含む mono
bodyToFlux
本体をFlux
に抽出します。- 型パラメーター:
T
- 要素型- パラメーター:
elementClass
-Flux
の要素のクラス- 戻り値:
- flux としての本体
bodyToFlux
本体をFlux
に抽出します。- 型パラメーター:
T
- 要素型- パラメーター:
typeReference
- 予想されるリクエスト本文の型を説明する型参照- 戻り値:
- 指定された型
T
の本体を含む flux
attribute
リクエスト属性値が存在する場合は取得します。- パラメーター:
name
- 属性名- 戻り値:
- 属性値
attributes
リクエスト属性の可変マップを取得します。- 戻り値:
- リクエスト属性
queryParam
存在する場合、指定された名前を持つ最初のクエリパラメーターを取得します。- パラメーター:
name
- パラメーター名- 戻り値:
- パラメーター値
queryParams
MultiValueMap<StringSE,StringSE> queryParams()このリクエストのすべてのクエリパラメーターを取得します。pathVariable
指定された名前のパス変数があれば、それを取得します。- パラメーター:
name
- 変数名- 戻り値:
- 変数値
- 例外:
IllegalArgumentExceptionSE
- 指定された名前のパス変数がない場合
pathVariables
このリクエストのすべてのパス変数を取得します。session
reactor.core.publisher.Mono<WebSession> session()このリクエストの Web セッションを取得します。クライアントからリクエストされたセッション ID と一致するか、クライアントがインスタンスを指定しなかったため、または基になるセッションが期限切れになったために新しいセッション ID でインスタンスを返すことが常に保証されています。
このメソッドを使用しても、セッションは自動的には作成されません。
principal
reactor.core.publisher.Mono<? extends PrincipalSE> principal()リクエストに対して認証されたユーザーを取得します(存在する場合)。formData
reactor.core.publisher.Mono<MultiValueMap<StringSE,StringSE>> formData()Content-Type が"application/x-www-form-urlencoded"
の場合はリクエストの本文からフォームデータを取得し、それ以外の場合は空のマップを取得します。注意 : このメソッドを呼び出すと、リクエストの本文が完全に読み取られて解析され、結果の
MultiValueMap
がキャッシュされるため、このメソッドを複数回呼び出しても安全です。multipartData
reactor.core.publisher.Mono<MultiValueMap<StringSE,Part>> multipartData()Content-Type が"multipart/form-data"
の場合はマルチパートリクエストのパーツを取得し、それ以外の場合は空のマップを取得します。注意 : このメソッドを呼び出すと、リクエストの本文が完全に読み取られて解析され、結果の
MultiValueMap
がキャッシュされるため、このメソッドを複数回呼び出しても安全です。exchange
ServerWebExchange exchange()このリクエストのベースとなる Web エクスチェンジを取得します。メモ: (
ServerRequest
およびServerResponse
で提供されるメソッドを使用する代わりに)交換を直接操作すると、不規則な結果が生じる可能性があります。- 導入:
- 5.1
checkNotModified
提供された最終変更タイムスタンプ(アプリケーションによって決定)を使用して、リクエストされたリソースが変更されたかどうかを確認します。変更されていない場合、このメソッドは対応するステータスコードとヘッダーを含むレスポンスを返し、それ以外の場合は空の結果を返します。
典型的な使用箇所:
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
- アプリケーションが基礎となるリソースについて決定した最終変更のタイムスタンプ- 戻り値:
- リクエストが変更されていない場合は対応するレスポンス、そうでない場合は空の結果
- 導入:
- 5.2.5
checkNotModified
提供された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
- 基になるリソースに対してアプリケーションが決定したエンティティタグ。このパラメーターは、必要に応じて引用符 (") で埋められます。値がない場合は、空の文字列""
を使用してください。- 戻り値:
- リクエストが変更されていない場合は対応するレスポンス、そうでない場合は空の結果
- 導入:
- 5.2.5
checkNotModified
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
- 基になるリソースに対してアプリケーションが決定したエンティティタグ。このパラメーターは、必要に応じて引用符 (") で埋められます。値がない場合は、空の文字列""
を使用してください。- 戻り値:
- リクエストが変更されていない場合は対応するレスポンス、それ以外の場合は空の結果。
- 導入:
- 5.2.5
create
static ServerRequest create(ServerWebExchange exchange, ListSE<HttpMessageReader<?>> messageReaders) 指定されたServerWebExchange
およびメッセージリーダーに基づいて新しいServerRequest
を作成します。- パラメーター:
exchange
- 交換messageReaders
- メッセージリーダー- 戻り値:
- 作成された
ServerRequest
from
メッセージリーダー、メソッド名、URI、ヘッダー、Cookie、指定されたリクエストの属性を使用してビルダーを作成します。- パラメーター:
other
- メッセージリーダー、メソッド名、URI、ヘッダー、属性をコピーするリクエスト- 戻り値:
- 作成されたビルダー
- 導入:
- 5.1
method()
を推奨