@@ -43,7 +43,6 @@ import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.context.ApplicationEventPublisherAware;
|
||||
import org.springframework.core.Ordered;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
@@ -166,7 +165,7 @@ public class AbstractGatewayControllerEndpoint implements ApplicationEventPublis
|
||||
.switchIfEmpty(Mono.defer(() -> Mono.just(ResponseEntity.badRequest().build())));
|
||||
}
|
||||
|
||||
@PostMapping(value = "/routes", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
@PostMapping("/routes")
|
||||
@SuppressWarnings("unchecked")
|
||||
public Mono<ResponseEntity<Object>> save(@RequestBody List<RouteDefinition> routes) {
|
||||
routes.stream().forEach(routeDef -> {
|
||||
|
||||
@@ -21,9 +21,6 @@ import reactor.core.publisher.Mono;
|
||||
import org.springframework.cloud.gateway.filter.GatewayFilter;
|
||||
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
|
||||
import org.springframework.cloud.gateway.support.ServerWebExchangeUtils;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.server.reactive.ServerHttpResponse;
|
||||
import org.springframework.http.server.reactive.ServerHttpResponseDecorator;
|
||||
import org.springframework.web.server.ServerWebExchange;
|
||||
|
||||
import static org.springframework.cloud.gateway.support.GatewayToStringStyler.filterToStringCreator;
|
||||
@@ -39,26 +36,8 @@ public class SetResponseHeaderGatewayFilterFactory extends AbstractNameValueGate
|
||||
@Override
|
||||
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
|
||||
String value = ServerWebExchangeUtils.expand(exchange, config.getValue());
|
||||
return chain.filter(exchange).then(Mono.fromRunnable(() -> {
|
||||
ServerHttpResponse response = exchange.getResponse();
|
||||
HttpHeaders headers = response.getHeaders();
|
||||
try {
|
||||
headers.set(config.name, value);
|
||||
}
|
||||
catch (UnsupportedOperationException e) {
|
||||
// ReadOnlyHttpHeaders
|
||||
HttpHeaders modified = new HttpHeaders();
|
||||
modified.putAll(headers);
|
||||
modified.set(config.name, value);
|
||||
ServerHttpResponse wrapped = new ServerHttpResponseDecorator(response) {
|
||||
@Override
|
||||
public HttpHeaders getHeaders() {
|
||||
return modified;
|
||||
}
|
||||
};
|
||||
exchange.mutate().response(wrapped);
|
||||
}
|
||||
}));
|
||||
return chain.filter(exchange)
|
||||
.then(Mono.fromRunnable(() -> exchange.getResponse().getHeaders().set(config.name, value)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user