Interface ServerWebExchange

All Known Implementing Classes:
DefaultServerWebExchange, MockServerWebExchange, ServerWebExchangeDecorator

public interface ServerWebExchange
Contract for an HTTP request-response interaction. Provides access to the HTTP request and response and also exposes additional server-side processing related properties and features such as request attributes.
Since:
5.0
Author:
Rossen Stoyanchev
  • Field Details

    • LOG_ID_ATTRIBUTE

      static final String LOG_ID_ATTRIBUTE
      Name of attribute whose value can be used to correlate log messages for this exchange. Use getLogPrefix() to obtain a consistently formatted prefix based on this attribute.
      Since:
      5.1
      See Also:
  • Method Details

    • getRequest

      ServerHttpRequest getRequest()
      Return the current HTTP request.
    • getResponse

      ServerHttpResponse getResponse()
      Return the current HTTP response.
    • getAttributes

      Map<String,Object> getAttributes()
      Return a mutable map of request attributes for the current exchange.
    • getAttribute

      @Nullable default <T> T getAttribute(String name)
      Return the request attribute value if present.
      Type Parameters:
      T - the attribute type
      Parameters:
      name - the attribute name
      Returns:
      the attribute value
    • getRequiredAttribute

      default <T> T getRequiredAttribute(String name)
      Return the request attribute value or if not present raise an IllegalArgumentException.
      Type Parameters:
      T - the attribute type
      Parameters:
      name - the attribute name
      Returns:
      the attribute value
    • getAttributeOrDefault

      default <T> T getAttributeOrDefault(String name, T defaultValue)
      Return the request attribute value, or a default, fallback value.
      Type Parameters:
      T - the attribute type
      Parameters:
      name - the attribute name
      defaultValue - a default value to return instead
      Returns:
      the attribute value
    • getSession

      reactor.core.publisher.Mono<WebSession> getSession()
      Return the web session for the current request. Always guaranteed to return an instance either matching to 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. See WebSession for more details.
    • getPrincipal

      <T extends Principal> reactor.core.publisher.Mono<T> getPrincipal()
      Return the authenticated user for the request, if any.
    • getFormData

      reactor.core.publisher.Mono<MultiValueMap<String,String>> getFormData()
      Return 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.

    • getMultipartData

      reactor.core.publisher.Mono<MultiValueMap<String,Part>> getMultipartData()
      Return 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.

      Note:the contents of each part is not cached, and can only be read once.

    • getLocaleContext

      LocaleContext getLocaleContext()
      Return the LocaleContext using the configured LocaleContextResolver.
    • getApplicationContext

      @Nullable ApplicationContext getApplicationContext()
      Return the ApplicationContext associated with the web application, if it was initialized with one via WebHttpHandlerBuilder.applicationContext(ApplicationContext).
      Since:
      5.0.3
      See Also:
    • isNotModified

      boolean isNotModified()
      Returns true if the one of the checkNotModified methods in this contract were used and they returned true.
    • checkNotModified

      boolean checkNotModified(Instant lastModified)
      An overloaded variant of checkNotModified(String, Instant) with a last-modified timestamp only.
      Parameters:
      lastModified - the last-modified time
      Returns:
      whether the request qualifies as not modified
    • checkNotModified

      boolean checkNotModified(String etag)
      An overloaded variant of checkNotModified(String, Instant) with an ETag (entity tag) value only.
      Parameters:
      etag - the entity tag for the underlying resource.
      Returns:
      true if the request does not require further processing.
    • checkNotModified

      boolean checkNotModified(@Nullable String etag, Instant lastModified)
      Check whether the requested resource has been modified given the supplied ETag (entity tag) and last-modified timestamp as determined by the application. Also transparently prepares the response, setting HTTP status, and adding "ETag" and "Last-Modified" headers when applicable. This method works with conditional GET/HEAD requests as well as with conditional POST/PUT/DELETE requests.

      Note: The HTTP specification recommends setting both ETag and Last-Modified values, but you can also use #checkNotModified(String) or checkNotModified(Instant).

      Parameters:
      etag - the entity tag that the application determined for the underlying resource. This parameter will be padded with quotes (") if necessary.
      lastModified - the last-modified timestamp that the application determined for the underlying resource
      Returns:
      true if the request does not require further processing.
    • transformUrl

      String transformUrl(String url)
      Transform the given url according to the registered transformation function(s). By default, this method returns the given url, though additional transformation functions can be registered with addUrlTransformer(java.util.function.Function<java.lang.String, java.lang.String>)
      Parameters:
      url - the URL to transform
      Returns:
      the transformed URL
    • addUrlTransformer

      void addUrlTransformer(Function<String,String> transformer)
      Register an additional URL transformation function for use with transformUrl(java.lang.String). The given function can be used to insert an id for authentication, a nonce for CSRF protection, etc.

      Note that the given function is applied after any previously registered functions.

      Parameters:
      transformer - a URL transformation function to add
    • getLogPrefix

      String getLogPrefix()
      Return a log message prefix to use to correlate messages for this exchange. The prefix is based on the value of the attribute LOG_ID_ATTRIBUTE along with some extra formatting so that the prefix can be conveniently prepended with no further formatting no separators required.
      Returns:
      the log message prefix or an empty String if the LOG_ID_ATTRIBUTE is not set.
      Since:
      5.1
    • mutate

      default ServerWebExchange.Builder mutate()
      Return a builder to mutate properties of this exchange by wrapping it with ServerWebExchangeDecorator and returning either mutated values or delegating back to this instance.