Example usage for org.springframework.http.server.reactive ServerHttpRequest mutate

List of usage examples for org.springframework.http.server.reactive ServerHttpRequest mutate

Introduction

In this page you can find the example usage for org.springframework.http.server.reactive ServerHttpRequest mutate.

Prototype

default ServerHttpRequest.Builder mutate() 

Source Link

Document

Return a builder to mutate properties of this request by wrapping it with ServerHttpRequestDecorator and returning either mutated values or delegating back to this instance.

Usage

From source file:org.springframework.cloud.gateway.filter.factory.PrefixPathGatewayFilterFactory.java

@Override
public GatewayFilter apply(Config config) {
    return (exchange, chain) -> {

        boolean alreadyPrefixed = exchange.getAttributeOrDefault(GATEWAY_ALREADY_PREFIXED_ATTR, false);
        if (alreadyPrefixed) {
            return chain.filter(exchange);
        }//  w w  w  .  ja v a  2  s  .c  o  m
        exchange.getAttributes().put(GATEWAY_ALREADY_PREFIXED_ATTR, true);

        ServerHttpRequest req = exchange.getRequest();
        addOriginalRequestUrl(exchange, req.getURI());
        String newPath = config.prefix + req.getURI().getRawPath();

        ServerHttpRequest request = req.mutate().path(newPath).build();

        exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, request.getURI());

        if (log.isTraceEnabled()) {
            log.trace("Prefixed URI with: " + config.prefix + " -> " + request.getURI());
        }

        return chain.filter(exchange.mutate().request(request).build());
    };
}