org.springframework.web.reactive.function.server.support

Class ServerRequestWrapper

  • java.lang.Object
    • org.springframework.web.reactive.function.server.support.ServerRequestWrapper
  • All Implemented Interfaces:
    ServerRequest


    public class ServerRequestWrapper
    extends java.lang.Object
    implements ServerRequest
    Implementation of the ServerRequest interface that can be subclassed to adapt the request in a handler filter function. All methods default to calling through to the wrapped request.
    Since:
    5.0
    Author:
    Arjen Poutsma
    • Constructor Summary

      Constructors 
      Constructor and Description
      ServerRequestWrapper(ServerRequest delegate)
      Create a new ServerRequestWrapper that wraps the given request.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method and Description
      java.util.Optional<java.lang.Object> attribute(java.lang.String name)
      Get the request attribute value if present.
      java.util.Map<java.lang.String,java.lang.Object> attributes()
      Get a mutable map of request attributes.
      <T> T body(BodyExtractor<T,? super ServerHttpRequest> extractor)
      Extract the body with the given BodyExtractor.
      <T> T body(BodyExtractor<T,? super ServerHttpRequest> extractor, java.util.Map<java.lang.String,java.lang.Object> hints)
      Extract the body with the given BodyExtractor and hints.
      <T> reactor.core.publisher.Flux<T> bodyToFlux(java.lang.Class<? extends T> elementClass)
      Extract the body to a Flux.
      <T> reactor.core.publisher.Flux<T> bodyToFlux(ParameterizedTypeReference<T> typeReference)
      Extract the body to a Flux.
      <T> reactor.core.publisher.Mono<T> bodyToMono(java.lang.Class<? extends T> elementClass)
      Extract the body to a Mono.
      <T> reactor.core.publisher.Mono<T> bodyToMono(ParameterizedTypeReference<T> typeReference)
      Extract the body to a Mono.
      MultiValueMap<java.lang.String,HttpCookie> cookies()
      Get the cookies of this request.
      ServerWebExchange exchange()
      Get the web exchange that this request is based on.
      reactor.core.publisher.Mono<MultiValueMap<java.lang.String,java.lang.String>> formData()
      Get the form data from the body of the request if the Content-Type is "application/x-www-form-urlencoded" or an empty map otherwise.
      ServerRequest.Headers headers()
      Get the headers of this request.
      java.util.List<HttpMessageReader<?>> messageReaders()
      Get the readers used to convert the body of this request.
      HttpMethod method()
      Get the HTTP method.
      java.lang.String methodName()
      Get the name of the HTTP method.
      reactor.core.publisher.Mono<MultiValueMap<java.lang.String,Part>> multipartData()
      Get the parts of a multipart request if the Content-Type is "multipart/form-data" or an empty map otherwise.
      java.lang.String path()
      Get the request path.
      PathContainer pathContainer()
      Get the request path as a PathContainer.
      java.lang.String pathVariable(java.lang.String name)
      Get the path variable with the given name, if present.
      java.util.Map<java.lang.String,java.lang.String> pathVariables()
      Get all path variables for this request.
      reactor.core.publisher.Mono<? extends java.security.Principal> principal()
      Get the authenticated user for the request, if any.
      java.util.Optional<java.lang.String> queryParam(java.lang.String name)
      Get the first query parameter with the given name, if present.
      MultiValueMap<java.lang.String,java.lang.String> queryParams()
      Get all query parameters for this request.
      java.util.Optional<java.net.InetSocketAddress> remoteAddress()
      Get the remote address to which this request is connected, if available.
      ServerRequest request()
      Return the wrapped request.
      reactor.core.publisher.Mono<WebSession> session()
      Get the web session for this request.
      java.net.URI uri()
      Get the request URI.
      UriBuilder uriBuilder()
      Get a UriBuilderComponents from the URI associated with this ServerRequest.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ServerRequestWrapper

        public ServerRequestWrapper(ServerRequest delegate)
        Create a new ServerRequestWrapper that wraps the given request.
        Parameters:
        delegate - the request to wrap
    • Method Detail

      • request

        public ServerRequest request()
        Return the wrapped request.
      • method

        public HttpMethod method()
        Description copied from interface: ServerRequest
        Get the HTTP method.
        Specified by:
        method in interface ServerRequest
        Returns:
        the HTTP method as an HttpMethod enum value, or null if not resolvable (e.g. in case of a non-standard HTTP method)
      • methodName

        public java.lang.String methodName()
        Description copied from interface: ServerRequest
        Get the name of the HTTP method.
        Specified by:
        methodName in interface ServerRequest
        Returns:
        the HTTP method as a String
      • uri

        public java.net.URI uri()
        Description copied from interface: ServerRequest
        Get the request URI.
        Specified by:
        uri in interface ServerRequest
      • uriBuilder

        public UriBuilder uriBuilder()
        Description copied from interface: ServerRequest
        Get a UriBuilderComponents from the URI associated with this ServerRequest.

        Note: as of 5.1 this method ignores "Forwarded" and "X-Forwarded-*" headers that specify the client-originated address. Consider using the ForwardedHeaderFilter to extract and use, or to discard such headers.

        Specified by:
        uriBuilder in interface ServerRequest
        Returns:
        a URI builder
      • path

        public java.lang.String path()
        Description copied from interface: ServerRequest
        Get the request path.
        Specified by:
        path in interface ServerRequest
      • remoteAddress

        public java.util.Optional<java.net.InetSocketAddress> remoteAddress()
        Description copied from interface: ServerRequest
        Get the remote address to which this request is connected, if available.
        Specified by:
        remoteAddress in interface ServerRequest
      • body

        public <T> T body(BodyExtractor<T,? super ServerHttpRequest> extractor,
                          java.util.Map<java.lang.String,java.lang.Object> hints)
        Description copied from interface: ServerRequest
        Extract the body with the given BodyExtractor and hints.
        Specified by:
        body in interface ServerRequest
        Type Parameters:
        T - the type of the body returned
        Parameters:
        extractor - the BodyExtractor that reads from the request
        hints - the map of hints like Jackson2CodecSupport.JSON_VIEW_HINT to use to customize body extraction
        Returns:
        the extracted body
      • bodyToMono

        public <T> reactor.core.publisher.Mono<T> bodyToMono(java.lang.Class<? extends T> elementClass)
        Description copied from interface: ServerRequest
        Extract the body to a Mono.
        Specified by:
        bodyToMono in interface ServerRequest
        Type Parameters:
        T - the element type
        Parameters:
        elementClass - the class of element in the Mono
        Returns:
        the body as a mono
      • bodyToMono

        public <T> reactor.core.publisher.Mono<T> bodyToMono(ParameterizedTypeReference<T> typeReference)
        Description copied from interface: ServerRequest
        Extract the body to a Mono.
        Specified by:
        bodyToMono in interface ServerRequest
        Type Parameters:
        T - the element type
        Parameters:
        typeReference - a type reference describing the expected response request type
        Returns:
        a mono containing the body of the given type T
      • bodyToFlux

        public <T> reactor.core.publisher.Flux<T> bodyToFlux(java.lang.Class<? extends T> elementClass)
        Description copied from interface: ServerRequest
        Extract the body to a Flux.
        Specified by:
        bodyToFlux in interface ServerRequest
        Type Parameters:
        T - the element type
        Parameters:
        elementClass - the class of element in the Flux
        Returns:
        the body as a flux
      • bodyToFlux

        public <T> reactor.core.publisher.Flux<T> bodyToFlux(ParameterizedTypeReference<T> typeReference)
        Description copied from interface: ServerRequest
        Extract the body to a Flux.
        Specified by:
        bodyToFlux in interface ServerRequest
        Type Parameters:
        T - the element type
        Parameters:
        typeReference - a type reference describing the expected request body type
        Returns:
        a flux containing the body of the given type T
      • attribute

        public java.util.Optional<java.lang.Object> attribute(java.lang.String name)
        Description copied from interface: ServerRequest
        Get the request attribute value if present.
        Specified by:
        attribute in interface ServerRequest
        Parameters:
        name - the attribute name
        Returns:
        the attribute value
      • attributes

        public java.util.Map<java.lang.String,java.lang.Object> attributes()
        Description copied from interface: ServerRequest
        Get a mutable map of request attributes.
        Specified by:
        attributes in interface ServerRequest
        Returns:
        the request attributes
      • queryParam

        public java.util.Optional<java.lang.String> queryParam(java.lang.String name)
        Description copied from interface: ServerRequest
        Get the first query parameter with the given name, if present.
        Specified by:
        queryParam in interface ServerRequest
        Parameters:
        name - the parameter name
        Returns:
        the parameter value
      • pathVariable

        public java.lang.String pathVariable(java.lang.String name)
        Description copied from interface: ServerRequest
        Get the path variable with the given name, if present.
        Specified by:
        pathVariable in interface ServerRequest
        Parameters:
        name - the variable name
        Returns:
        the variable value
      • pathVariables

        public java.util.Map<java.lang.String,java.lang.String> pathVariables()
        Description copied from interface: ServerRequest
        Get all path variables for this request.
        Specified by:
        pathVariables in interface ServerRequest
      • session

        public reactor.core.publisher.Mono<WebSession> session()
        Description copied from interface: ServerRequest
        Get the web session for this request.

        Always guaranteed to return an instance either matching the session id requested by the client, or with a new session id either because the client did not specify one or because the underlying session had expired.

        Use of this method does not automatically create a session.

        Specified by:
        session in interface ServerRequest
      • principal

        public reactor.core.publisher.Mono<? extends java.security.Principal> principal()
        Description copied from interface: ServerRequest
        Get the authenticated user for the request, if any.
        Specified by:
        principal in interface ServerRequest
      • formData

        public reactor.core.publisher.Mono<MultiValueMap<java.lang.String,java.lang.String>> formData()
        Description copied from interface: ServerRequest
        Get the form data from the body of the request if the Content-Type is "application/x-www-form-urlencoded" or an empty map otherwise.

        Note: calling this method causes the request body to be read and parsed in full, and the resulting MultiValueMap is cached so that this method is safe to call more than once.

        Specified by:
        formData in interface ServerRequest
      • multipartData

        public reactor.core.publisher.Mono<MultiValueMap<java.lang.String,Part>> multipartData()
        Description copied from interface: ServerRequest
        Get the parts of a multipart request if the Content-Type is "multipart/form-data" or an empty map otherwise.

        Note: calling this method causes the request body to be read and parsed in full, and the resulting MultiValueMap is cached so that this method is safe to call more than once.

        Specified by:
        multipartData in interface ServerRequest
      • exchange

        public ServerWebExchange exchange()
        Description copied from interface: ServerRequest
        Get the web exchange that this request is based on.

        Note: Manipulating the exchange directly (instead of using the methods provided on ServerRequest and ServerResponse) can lead to irregular results.

        Specified by:
        exchange in interface ServerRequest