Resolve URI to baseUrl in RestClient
Closes gh-32679
This commit is contained in:
committed by
Arjen Poutsma
parent
98e89d8fba
commit
5864f57198
@@ -17,6 +17,7 @@
|
||||
package org.springframework.web.client;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.net.URI;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -90,6 +91,18 @@ public class RestClientBuilderTests {
|
||||
assertThat(fieldValue("uriBuilderFactory", defaultBuilder)).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void defaultUri() {
|
||||
URI baseUrl = URI.create("https://example.org");
|
||||
RestClient.Builder builder = RestClient.builder();
|
||||
builder.baseUrl(baseUrl);
|
||||
|
||||
assertThat(builder).isInstanceOf(DefaultRestClientBuilder.class);
|
||||
DefaultRestClientBuilder defaultBuilder = (DefaultRestClientBuilder) builder;
|
||||
|
||||
assertThat(fieldValue("baseUrl", defaultBuilder)).isEqualTo(baseUrl.toString());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static Object fieldValue(String name, DefaultRestClientBuilder instance) {
|
||||
try {
|
||||
|
||||
@@ -21,6 +21,8 @@ import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -923,6 +925,28 @@ class RestClientIntegrationTests {
|
||||
expectRequest(request -> assertThat(request.getHeader("Accept")).isEqualTo(MediaType.TEXT_PLAIN_VALUE));
|
||||
}
|
||||
|
||||
@ParameterizedRestClientTest
|
||||
void relativeUri(ClientHttpRequestFactory requestFactory) throws URISyntaxException {
|
||||
startServer(requestFactory);
|
||||
|
||||
prepareResponse(response -> response.setHeader("Content-Type", "text/plain")
|
||||
.setBody("Hello Spring!"));
|
||||
|
||||
URI uri = new URI(null, null, "/foo bar", null);
|
||||
|
||||
String result = this.restClient
|
||||
.get()
|
||||
.uri(uri)
|
||||
.accept(MediaType.TEXT_PLAIN)
|
||||
.retrieve()
|
||||
.body(String.class);
|
||||
|
||||
assertThat(result).isEqualTo("Hello Spring!");
|
||||
|
||||
expectRequestCount(1);
|
||||
expectRequest(request -> assertThat(request.getPath()).isEqualTo("/foo%20bar"));
|
||||
}
|
||||
|
||||
|
||||
private void prepareResponse(Consumer<MockResponse> consumer) {
|
||||
MockResponse response = new MockResponse();
|
||||
|
||||
Reference in New Issue
Block a user