From 7bc2254f5cc48f520eae984b4f52f6376dccdcb0 Mon Sep 17 00:00:00 2001 From: birariro Date: Fri, 21 Jun 2024 13:27:36 +0900 Subject: [PATCH 1/3] fix: remove last slash of url --- .../cloud/openfeign/FeignClientsRegistrar.java | 3 +++ .../cloud/openfeign/FeignClientBuilderTests.java | 4 ++-- .../cloud/openfeign/FeignClientsRegistrarTests.java | 6 ++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsRegistrar.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsRegistrar.java index 6f7adac23..6353a023e 100644 --- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsRegistrar.java +++ b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsRegistrar.java @@ -117,6 +117,9 @@ static String getUrl(String url) { if (!url.contains("://")) { url = "http://" + url; } + if (url.endsWith("/")) { + url = url.substring(0, url.length() - 1); + } try { new URL(url); } diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientBuilderTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientBuilderTests.java index 9a212a5a5..bf21f7f28 100644 --- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientBuilderTests.java +++ b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientBuilderTests.java @@ -128,7 +128,7 @@ void forType_allFieldsSetOnBuilder() { assertFactoryBeanField(builder, "contextId", "TestContext"); // and: - assertFactoryBeanField(builder, "url", "http://Url/"); + assertFactoryBeanField(builder, "url", "http://Url"); assertFactoryBeanField(builder, "path", "/Path"); assertFactoryBeanField(builder, "dismiss404", true); @@ -148,7 +148,7 @@ void forType_clientFactoryBeanProvided() { assertFactoryBeanField(builder, "contextId", "TestContext"); // and: - assertFactoryBeanField(builder, "url", "http://Url/"); + assertFactoryBeanField(builder, "url", "http://Url"); assertFactoryBeanField(builder, "path", "/Path"); assertFactoryBeanField(builder, "dismiss404", true); List additionalCustomizers = getFactoryBeanField(builder, "additionalCustomizers"); diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientsRegistrarTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientsRegistrarTests.java index 0d2982928..ba536fcb7 100644 --- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientsRegistrarTests.java +++ b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientsRegistrarTests.java @@ -89,6 +89,12 @@ private String testGetName(String name) { return registrar.getName(Collections.singletonMap("name", name)); } + @Test + void removeLastSlashOfUrl() { + String url = FeignClientsRegistrar.getUrl("http://localhost/"); + assertThat(url).isEqualTo("http://localhost"); + } + @Test void testFallback() { assertThatExceptionOfType(IllegalArgumentException.class) From e067fdf582b5970c37d9270027de2f16033408e7 Mon Sep 17 00:00:00 2001 From: birariro Date: Sun, 29 Sep 2024 00:36:48 +0900 Subject: [PATCH 2/3] code rollback --- .../springframework/cloud/openfeign/FeignClientsRegistrar.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsRegistrar.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsRegistrar.java index 6353a023e..6f7adac23 100644 --- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsRegistrar.java +++ b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsRegistrar.java @@ -117,9 +117,6 @@ static String getUrl(String url) { if (!url.contains("://")) { url = "http://" + url; } - if (url.endsWith("/")) { - url = url.substring(0, url.length() - 1); - } try { new URL(url); } From 3b1d2720efe2307303e252256d3bbf8b7d047cfe Mon Sep 17 00:00:00 2001 From: Artem Gorshkov <47691597+gorshik@users.noreply.github.com> Date: Thu, 28 Apr 2022 12:36:53 +0300 Subject: [PATCH 3/3] Delete '/' at the end of url In situation when we create FeignClient in this way: @FeignClient(url = "https://localhost/", path = "api/v2") We will get an error because of adding '/' in the beginning of the path in FeignClientsRegistrar.getPath, result will: https://localhost//api/v2 To escape this situation we need to delete '/' at the end of url in FeignClientsRegistrar.getUrl --- .../springframework/cloud/openfeign/FeignClientsRegistrar.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsRegistrar.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsRegistrar.java index 6f7adac23..6353a023e 100644 --- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsRegistrar.java +++ b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsRegistrar.java @@ -117,6 +117,9 @@ static String getUrl(String url) { if (!url.contains("://")) { url = "http://" + url; } + if (url.endsWith("/")) { + url = url.substring(0, url.length() - 1); + } try { new URL(url); }