Skip to content

Commit 704f530

Browse files
author
bnasslahsen
committed
Fix springdoc.swagger-ui.url. Fixes #339
1 parent 148661a commit 704f530

File tree

6 files changed

+76
-8
lines changed

6 files changed

+76
-8
lines changed

Diff for: springdoc-openapi-common/src/main/java/org/springdoc/core/Constants.java

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ public final class Constants {
1515
public static final String SPRINGDOC_CACHE_DISABLED_VALUE= "${" + SPRINGDOC_CACHE_DISABLED + ":false}";
1616
public static final String SPRINGDOC_SWAGGER_UI_ENABLED = "springdoc.swagger-ui.enabled";
1717
public static final String SPRINGDOC_SWAGGER_UI_CONFIG_URL ="springdoc.swagger-ui.configUrl";
18+
public static final String SPRINGDOC_SWAGGER_UI_URL ="springdoc.swagger-ui.url";
19+
public static final String SPRINGDOC_SWAGGER_UI_URL_VALUE ="${" + SPRINGDOC_SWAGGER_UI_URL + ":#{null}}";
1820
public static final String SPRINGDOC_SWAGGER_UI_CONFIG_URL_VALUE ="${" + SPRINGDOC_SWAGGER_UI_CONFIG_URL + ":#{null}}";
1921
public static final String SPRINGDOC_SHOW_ACTUATOR = "springdoc.show-actuator";
2022
public static final String SPRINGDOC_SHOW_ACTUATOR_VALUE = "${" + SPRINGDOC_SHOW_ACTUATOR + ":false}";

Diff for: springdoc-openapi-ui/src/main/java/org/springdoc/ui/SwaggerWelcome.java

+9-3
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ class SwaggerWelcome implements InitializingBean {
4040
@Value(SPRINGDOC_SWAGGER_UI_CONFIG_URL_VALUE)
4141
private String originConfigUrl;
4242

43+
@Value(SPRINGDOC_SWAGGER_UI_URL_VALUE)
44+
private String swaggerUiUrl;
45+
4346
@Autowired
4447
private SwaggerUiConfigProperties swaggerUiConfig;
4548

@@ -84,9 +87,12 @@ private void buildConfigUrl(HttpServletRequest request) {
8487
String url = buildUrl(request, apiDocsUrl);
8588
String swaggerConfigUrl = url + DEFAULT_PATH_SEPARATOR + SWAGGGER_CONFIG_FILE;
8689
swaggerUiConfig.setConfigUrl(swaggerConfigUrl);
87-
if (SwaggerUiConfigProperties.getSwaggerUrls().isEmpty())
88-
swaggerUiConfig.setUrl(url);
89-
else
90+
if (SwaggerUiConfigProperties.getSwaggerUrls().isEmpty()) {
91+
if (StringUtils.isEmpty(swaggerUiUrl))
92+
swaggerUiConfig.setUrl(url);
93+
else
94+
swaggerUiConfig.setUrl(swaggerUiUrl);
95+
} else
9096
SwaggerUiConfigProperties.addUrl(url);
9197
}
9298
if (!swaggerUiConfig.isValidUrl(swaggerUiConfig.getOauth2RedirectUrl())) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package test.org.springdoc.ui.app6;
2+
3+
import org.junit.Test;
4+
import org.springframework.boot.test.context.SpringBootTest;
5+
import test.org.springdoc.ui.AbstractSpringDocTest;
6+
7+
import static org.hamcrest.CoreMatchers.equalTo;
8+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
9+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
10+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
11+
12+
@SpringBootTest(properties = "springdoc.swagger-ui.url=http://myserver:8080/v3/api-docs")
13+
public class SpringDocSwaggerUiUrlPropertyTest extends AbstractSpringDocTest {
14+
15+
@Test
16+
public void with_swagger_ui_property() throws Exception {
17+
mockMvc.perform(get("/v3/api-docs/swagger-config"))
18+
.andExpect(status().isOk())
19+
.andExpect(jsonPath("url", equalTo("http://myserver:8080/v3/api-docs")));
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package test.org.springdoc.ui.app6;
2+
3+
import org.springdoc.core.GroupedOpenApi;
4+
import org.springframework.boot.SpringApplication;
5+
import org.springframework.boot.autoconfigure.SpringBootApplication;
6+
import org.springframework.context.annotation.Bean;
7+
8+
@SpringBootApplication
9+
public class SpringDocTestApp {
10+
11+
public static void main(String[] args) {
12+
SpringApplication.run(SpringDocTestApp.class, args);
13+
}
14+
15+
@Bean
16+
public GroupedOpenApi storeOpenApi() {
17+
String paths[] = {"/store/**"};
18+
return GroupedOpenApi.builder()
19+
.setGroup("stores")
20+
.pathsToMatch(paths)
21+
.build();
22+
}
23+
24+
@Bean
25+
public GroupedOpenApi groupOpenApi() {
26+
String paths[] = {"/pet/**"};
27+
return GroupedOpenApi.builder()
28+
.setGroup("pets")
29+
.pathsToMatch(paths)
30+
.build();
31+
}
32+
33+
}

Diff for: springdoc-openapi-webflux-ui/src/main/java/org/springdoc/ui/SwaggerWelcome.java

+11-4
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ public class SwaggerWelcome {
3636
private String uiPath;
3737
@Value(WEB_JARS_PREFIX_URL)
3838
private String webJarsPrefixUrl;
39+
@Value(SPRINGDOC_SWAGGER_UI_URL_VALUE)
40+
private String swaggerUiUrl;
41+
@Value(SPRINGDOC_SWAGGER_UI_CONFIG_URL_VALUE)
42+
private String originConfigUrl;
3943

4044
@Bean
4145
@ConditionalOnProperty(name = SPRINGDOC_SWAGGER_UI_ENABLED, matchIfMissing = true)
@@ -56,15 +60,18 @@ RouterFunction<ServerResponse> getSwaggerUiConfig() {
5660
}
5761

5862
private void buildConfigUrl() {
59-
if (StringUtils.isEmpty(swaggerUiConfig.getConfigUrl())) {
63+
if (StringUtils.isEmpty(originConfigUrl)){
6064
String swaggerConfigUrl = apiDocsUrl + DEFAULT_PATH_SEPARATOR + SWAGGGER_CONFIG_FILE;
6165
swaggerUiConfig.setConfigUrl(swaggerConfigUrl);
62-
6366
if (SwaggerUiConfigProperties.getSwaggerUrls().isEmpty())
64-
swaggerUiConfig.setUrl(apiDocsUrl);
67+
{
68+
if (StringUtils.isEmpty(swaggerUiUrl))
69+
swaggerUiConfig.setUrl(apiDocsUrl);
70+
else
71+
swaggerUiConfig.setUrl(swaggerUiUrl);
72+
}
6573
else
6674
SwaggerUiConfigProperties.addUrl(apiDocsUrl);
67-
6875
}
6976
}
7077

Diff for: springdoc-openapi-webmvc-core/src/test/java/test/org/springdoc/api/app73/HelloController.java

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import io.swagger.v3.oas.annotations.enums.ParameterIn;
55
import org.springframework.http.HttpStatus;
66
import org.springframework.web.bind.annotation.*;
7-
import test.org.springdoc.api.app71.Dog;
87

98

109
@RestController

0 commit comments

Comments
 (0)