I am able to read request parameters in the below filter . I want to change one of the parameters how can I do that? I am using spring cloud version 2020.0.0
@Component
public class ReadRequestBodyFilter extends AbstractGatewayFilterFactory<ReadRequestBodyFilter.Config>{
public static class Config {}
public ReadRequestBodyFilter() {
super(Config.class);
}
@Override
public GatewayFilter apply(Config config) {
return (exchange, chain) -> {
String cachedBodyAttribute = exchange.getAttribute("cachedRequestBodyObject");
System.out.println("cachedBodyAttribute-->"+cachedBodyAttribute);
return chain.filter(exchange);
};
}
}
ModifyRequestBodyGatewayFilterFactory can be used to change the body of a request
@Override
public GatewayFilter apply(Config config) {
return (exchange, chain) -> {
String cachedBodyAttribute = exchange.getAttribute("cachedRequestBodyObject");
System.out.println("cachedBodyAttribute-->"+cachedBodyAttribute);
// modify requestData
String newRequestData = changeRequestData(requestData);
ModifyRequestBodyGatewayFilterFactory.Config modifyRequestConfig = new ModifyRequestBodyGatewayFilterFactory.Config()
.setContentType(ContentType.APPLICATION_JSON.getMimeType()) // change content type ...
.setRewriteFunction(String.class, String.class, (exchange, originalRequestBody) -> Mono.just(newRequestData))
return new ModifyRequestBodyGatewayFilterFactory().apply(modifyRequestConfig).filter(exchange, chain);
};
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With