Invoke defaultRequest earlier in RestClient and WebClient
Closes gh-32053
This commit is contained in:
@@ -177,7 +177,11 @@ final class DefaultWebClient implements WebClient {
|
||||
}
|
||||
|
||||
private RequestBodyUriSpec methodInternal(HttpMethod httpMethod) {
|
||||
return new DefaultRequestBodyUriSpec(httpMethod);
|
||||
DefaultRequestBodyUriSpec spec = new DefaultRequestBodyUriSpec(httpMethod);
|
||||
if (this.defaultRequest != null) {
|
||||
this.defaultRequest.accept(spec);
|
||||
}
|
||||
return spec;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -479,9 +483,6 @@ final class DefaultWebClient implements WebClient {
|
||||
}
|
||||
|
||||
private ClientRequest.Builder initRequestBuilder() {
|
||||
if (defaultRequest != null) {
|
||||
defaultRequest.accept(this);
|
||||
}
|
||||
ClientRequest.Builder builder = ClientRequest.create(this.httpMethod, initUri())
|
||||
.headers(this::initHeaders)
|
||||
.cookies(this::initCookies)
|
||||
|
||||
@@ -528,6 +528,23 @@ public class DefaultWebClientTests {
|
||||
StepVerifier.create(responsePublisher).expectError(WebClientResponseException.class).verify();
|
||||
}
|
||||
|
||||
@Test // gh-32053
|
||||
void defaultRequestOverride() {
|
||||
WebClient client = this.builder
|
||||
.defaultRequest(spec -> spec.accept(MediaType.APPLICATION_JSON))
|
||||
.build();
|
||||
|
||||
client.get().uri("/path")
|
||||
.accept(MediaType.IMAGE_PNG)
|
||||
.retrieve()
|
||||
.bodyToMono(Void.class)
|
||||
.block(Duration.ofSeconds(3));
|
||||
|
||||
ClientRequest request = verifyAndGetRequest();
|
||||
assertThat(request.headers().getAccept()).containsExactly(MediaType.IMAGE_PNG);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private ClientRequest verifyAndGetRequest() {
|
||||
ClientRequest request = this.captor.getValue();
|
||||
|
||||
Reference in New Issue
Block a user