インターフェース ServerRequest

すべての既知の実装クラス:
MockServerRequestServerRequestWrapper

public interface ServerRequest
HandlerFunction によって処理されるサーバー側の HTTP リクエストを表します。

ヘッダーと本文へのアクセスは、それぞれ ServerRequest.Headersbody(BodyExtractor) によって提供されます。

導入:
5.0
作成者:
Arjen Poutsma, Sebastien Deleuze
  • メソッドの詳細

    • method

      HttpMethod method()
      HTTP メソッドを取得します。
    • methodName

      @DeprecatedSE(since="6.0") StringSE methodName()
      使用すべきではありません。
      6.0 現在、method() を推奨
      HTTP メソッドの名前を取得します。
      戻り値:
      文字列としての HTTP メソッド
    • uri

      URISE uri()
      リクエスト URI を取得します。
    • uriBuilder

      UriBuilder uriBuilder()
      この ServerRequest に関連付けられた URI から UriBuilderComponents を取得します。

      注意 : 5.1 以降、このメソッドは、クライアントが発信したアドレスを指定する "Forwarded" および "X-Forwarded-*" ヘッダーを無視します。ForwardedHeaderFilter を使用して、このようなヘッダーを抽出して使用するか、破棄することを検討してください。

      戻り値:
      URI ビルダー
    • path

      default StringSE path()
      リクエストパスを取得します。
    • pathContainer

      @DeprecatedSE default PathContainer pathContainer()
      使用すべきではありません。
      5.3 の時点で、requestPath() を推奨
      リクエストパスを PathContainer として取得します。
    • requestPath

      default RequestPath requestPath()
      リクエストパスを PathContainer として取得します。
      導入:
      5.3
    • headers

      このリクエストのヘッダーを取得します。
    • cookies

      このリクエストの Cookie を取得します。
    • remoteAddress

      可能な場合、このリクエストが接続されているリモートアドレスを取得します。
      導入:
      5.1
    • localAddress

      このリクエストが接続されているローカルアドレスを取得します(利用可能な場合)。
      導入:
      5.2.3
    • messageReaders

      ListSE<HttpMessageReader<?>> messageReaders()
      このリクエストの本文の変換に使用されるリーダーを取得します。
      導入:
      5.1
    • body

      <T> T body(BodyExtractor<T,? super ServerHttpRequest> extractor)
      指定された BodyExtractor で本体を抽出します。
      型パラメーター:
      T - 返される本体の型
      パラメーター:
      extractor - リクエストから読み取る BodyExtractor 
      戻り値:
      抽出されたボディ
      関連事項:
    • body

      <T> T body(BodyExtractor<T,? super ServerHttpRequest> extractor, MapSE<StringSE,ObjectSE> hints)
      指定された BodyExtractor とヒントを使用してボディを抽出します。
      型パラメーター:
      T - 返される本体の型
      パラメーター:
      extractor - リクエストから読み取る BodyExtractor 
      hints - ボディ抽出のカスタマイズに使用する Jackson2CodecSupport.JSON_VIEW_HINT などのヒントのマップ
      戻り値:
      抽出されたボディ
    • bodyToMono

      <T> reactor.core.publisher.Mono<T> bodyToMono(ClassSE<? extends T> elementClass)
      本体を Mono に抽出します。
      型パラメーター:
      T - 要素型
      パラメーター:
      elementClass - Mono の要素のクラス
      戻り値:
      mono としての本体
    • bodyToMono

      <T> reactor.core.publisher.Mono<T> bodyToMono(ParameterizedTypeReference<T> typeReference)
      本体を Mono に抽出します。
      型パラメーター:
      T - 要素型
      パラメーター:
      typeReference - 予期されるレスポンスリクエスト型を説明する型参照
      戻り値:
      指定された型 T の本体を含む mono
    • bodyToFlux

      <T> reactor.core.publisher.Flux<T> bodyToFlux(ClassSE<? extends T> elementClass)
      本体を Flux に抽出します。
      型パラメーター:
      T - 要素型
      パラメーター:
      elementClass - Flux の要素のクラス
      戻り値:
      flux としての本体
    • bodyToFlux

      <T> reactor.core.publisher.Flux<T> bodyToFlux(ParameterizedTypeReference<T> typeReference)
      本体を Flux に抽出します。
      型パラメーター:
      T - 要素型
      パラメーター:
      typeReference - 予想されるリクエスト本文の型を説明する型参照
      戻り値:
      指定された型 T の本体を含む flux
    • bind

      default <T> reactor.core.publisher.Mono<T> bind(ClassSE<T> bindType)
      このリクエストにバインドして、指定された型のインスタンスを返します。
      型パラメーター:
      T - バインドする型
      パラメーター:
      bindType - このリクエストをバインドするクラスの型
      戻り値:
      bindType の構築されバインドされたインスタンス、またはバインドエラーの場合は BindException のいずれかを含む mono
      導入:
      6.1
    • bind

      <T> reactor.core.publisher.Mono<T> bind(ClassSE<T> bindType, ConsumerSE<WebDataBinder> dataBinderCustomizer)
      このリクエストにバインドして、指定された型のインスタンスを返します。
      型パラメーター:
      T - バインドする型
      パラメーター:
      bindType - このリクエストをバインドするクラスの型
      dataBinderCustomizer - データバインダーをカスタマイズするために使用されます。たとえば、許可 / 禁止フィールドを設定します。
      戻り値:
      bindType の構築されバインドされたインスタンス、またはバインドエラーの場合は BindException のいずれかを含む mono
      導入:
      6.1
    • attribute

      default OptionalSE<ObjectSE> attribute(StringSE name)
      リクエスト属性値が存在する場合は取得します。
      パラメーター:
      name - 属性名
      戻り値:
      属性値
    • attributes

      MapSE<StringSE,ObjectSE> attributes()
      リクエスト属性の可変マップを取得します。
      戻り値:
      リクエスト属性
    • queryParam

      default OptionalSE<StringSE> queryParam(StringSE name)
      存在する場合、指定された名前を持つ最初のクエリパラメーターを取得します。
      パラメーター:
      name - パラメーター名
      戻り値:
      パラメーター値
    • queryParams

      このリクエストのすべてのクエリパラメーターを取得します。
    • pathVariable

      default StringSE pathVariable(StringSE name)
      指定された名前のパス変数があれば、それを取得します。
      パラメーター:
      name - 変数名
      戻り値:
      変数値
      例外:
      IllegalArgumentExceptionSE - 指定された名前のパス変数がない場合
    • pathVariables

      MapSE<StringSE,StringSE> 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

      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 - アプリケーションが基礎となるリソースについて決定した最終変更のタイムスタンプ
      戻り値:
      リクエストが変更されていない場合は対応するレスポンス、そうでない場合は空の結果
      導入:
      5.2.5
    • checkNotModified

      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 - 基になるリソースに対してアプリケーションが決定したエンティティタグ。このパラメーターは、必要に応じて引用符 (") で埋められます。値がない場合は、空の文字列 "" を使用してください。
      戻り値:
      リクエストが変更されていない場合は対応するレスポンス、そうでない場合は空の結果
      導入:
      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

      static ServerRequest.Builder from(ServerRequest other)
      メッセージリーダー、メソッド名、URI、ヘッダー、Cookie、指定されたリクエストの属性を使用してビルダーを作成します。
      パラメーター:
      other - メッセージリーダー、メソッド名、URI、ヘッダー、属性をコピーするリクエスト
      戻り値:
      作成されたビルダー
      導入:
      5.1