Guys when i set my webclient in bean
@Bean
public WebClient webClient() {
return WebClient.builder()
.baseUrl("https://api.github.com")
.build();
}
and wrote filter to check if there's “Accept: application/json” header
this filter doesnt really intercept it
@Configuration
@Component
public class WebFilterHeaders implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
var acceptHeader = exchange.getRequest().getHeaders().getFirst("Accept");
if (acceptHeader == null || !acceptHeader.equals("application/json")) {
exchange.getResponse().setStatusCode(HttpStatus.BAD_REQUEST);
return exchange.getResponse().setComplete();
}
return chain.filter(exchange);
}
}
Here's examplary requests call
return webClient.get()
.uri(uriBuilder -> uriBuilder
.path("/users/{request}/repos")
.build(request.nickname()))
.exchangeToFlux(res -> res.bodyToFlux(RepositoryData.class))
.filter(repositoryData -> !repositoryData.fork())
.flatMap(repositoryData -> getBranchesAndSHAs(repositoryData)
.collectList()
.map(branchDataList -> new GetRepoResponse(repositoryData.name(), repositoryData.owner().login(), branchDataList)))
.collectList();
Does anyone know where the problem is? I didn't set it default header “Accept: application/json”
on purpose to check if filter works correctly and it seems dont