I’m trying to put multiple headers into defaultHeaders(), But I don’t have idea how to create Consumer object from return of createHeaders() method
this.someWebClient = WebClient.builder() .baseUrl(someConfiguration.getApiUrl()) .clientConnector(buildTimeoutConnector()) .defaultHeaders(????) // Consumer<HttpHeaders> .build();
I can build my header in that way:
private HttpHeaders createHeaders(String token) { HttpHeaders headers = new HttpHeaders(); headers.add(HttpHeaders.ACCEPT, V1_PUBLIC); headers.add(HttpHeaders.HOST, "abc"); headers.add(HttpHeaders.AUTHORIZATION, "Bearer " + token); return headers; }
but how to wrap it into Consumer?
Advertisement
Answer
Clearly the method doc says that it needs a Consumer
of some Type. So you can create an anonymous class implementing the Consumer
interface or use lambda expression like this:
- Using anonymous inner class:
this.someWebClient = WebClient.builder() .baseUrl(someConfiguration.getApiUrl()) .clientConnector(buildTimeoutConnector()) .defaultHeaders(new Consumer<HttpHeaders>() { @Override public void accept(HttpHeaders httpHeaders) { httpHeaders.addAll(createHeaders(token)); } }) .build();
- Using lambda:
this.someWebClient = WebClient.builder() .baseUrl(someConfiguration.getApiUrl()) .clientConnector(buildTimeoutConnector()) .defaultHeaders(httpHeaders -> { httpHeaders.addAll(createHeaders(token)); }) .build();