Skip to content

Commit 0e94617

Browse files
committed
chore: forward queryParameters to swagger-ui when redirecting
1 parent 02a8bc5 commit 0e94617

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

springdoc-openapi-ui/src/main/java/org/springdoc/webmvc/ui/SwaggerWelcomeCommon.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ protected String redirectToUi(HttpServletRequest request) {
3030
buildConfigUrl(request.getContextPath(), ServletUriComponentsBuilder.fromCurrentContextPath());
3131
String sbUrl = swaggerUiConfigParameters.getUiRootPath() + SWAGGER_UI_URL;
3232
UriComponentsBuilder uriBuilder = getUriComponentsBuilder(sbUrl);
33+
34+
// forward all queryParams from original request
35+
request.getParameterMap().forEach(uriBuilder::queryParam);
36+
3337
return UrlBasedViewResolver.REDIRECT_URL_PREFIX + uriBuilder.build().encode().toString();
3438
}
3539

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/*
2+
*
3+
* * Copyright 2019-2020 the original author or authors.
4+
* *
5+
* * Licensed under the Apache License, Version 2.0 (the "License");
6+
* * you may not use this file except in compliance with the License.
7+
* * You may obtain a copy of the License at
8+
* *
9+
* * https://www.apache.org/licenses/LICENSE-2.0
10+
* *
11+
* * Unless required by applicable law or agreed to in writing, software
12+
* * distributed under the License is distributed on an "AS IS" BASIS,
13+
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* * See the License for the specific language governing permissions and
15+
* * limitations under the License.
16+
*
17+
*/
18+
19+
package test.org.springdoc.ui.app1;
20+
21+
import org.junit.jupiter.api.Test;
22+
import org.springframework.boot.autoconfigure.SpringBootApplication;
23+
import test.org.springdoc.ui.AbstractSpringDocTest;
24+
25+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
26+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
27+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
28+
29+
public class SpringDocRedirectOriginalQueryParamsTest extends AbstractSpringDocTest {
30+
31+
@Test
32+
public void shouldRedirectWithOriginalQueryParams() throws Exception {
33+
mockMvc.perform(get("/swagger-ui.html").queryParam("paramA", "123").queryParam("paramB", "e n c o d e d ! % &"))
34+
.andExpect(status().isFound())
35+
.andExpect(header().string("Location",
36+
"/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config&paramA=123&paramB=e%20n%20c%20o%20d%20e%20d%20!%20%25%20%26"));
37+
}
38+
39+
@Test
40+
public void shouldRedirectWithOriginalQueryParamsHavingMultipleValues() throws Exception {
41+
mockMvc.perform(get("/swagger-ui.html").queryParam("paramA", "1", "2", "3"))
42+
.andExpect(status().isFound())
43+
.andExpect(header().string("Location",
44+
"/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config&paramA=1&paramA=2&paramA=3"));
45+
}
46+
47+
@SpringBootApplication
48+
static class SpringDocTestApp {
49+
}
50+
51+
}

0 commit comments

Comments
 (0)