Invoke defaultRequest earlier in RestClient and WebClient

Closes gh-32053
This commit is contained in:
Arjen Poutsma
2024-01-25 11:09:38 +01:00
parent 218957f0e8
commit bc2257aaff
4 changed files with 50 additions and 8 deletions

View File

@@ -900,6 +900,29 @@ class RestClientIntegrationTests {
expectRequest(request -> assertThat(request.getHeader("foo")).isEqualTo("bar"));
}
@ParameterizedRestClientTest
void defaultRequestOverride(ClientHttpRequestFactory requestFactory) {
startServer(requestFactory);
prepareResponse(response -> response.setHeader("Content-Type", "text/plain")
.setBody("Hello Spring!"));
RestClient headersClient = this.restClient.mutate()
.defaultRequest(request -> request.accept(MediaType.APPLICATION_JSON))
.build();
String result = headersClient.get()
.uri("/greeting")
.accept(MediaType.TEXT_PLAIN)
.retrieve()
.body(String.class);
assertThat(result).isEqualTo("Hello Spring!");
expectRequestCount(1);
expectRequest(request -> assertThat(request.getHeader("Accept")).isEqualTo(MediaType.TEXT_PLAIN_VALUE));
}
private void prepareResponse(Consumer<MockResponse> consumer) {
MockResponse response = new MockResponse();