I am using JAX-RS with Spring Boot and springfox to generate the swagger-ui from annotations.
Currently the docs are located at http://localhost:8080/swagger-ui.html
However, I now have a requirement to move this to http://localhost:8080/api/index.html
Following this issue comment I have a class that looks like this:
@Configuration
public class SwaggerUIConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addRedirectViewController("/documentation/v2/api-docs", "/v2/api-docs");
registry.addRedirectViewController("/documentation/configuration/ui", "/configuration/ui");
registry.addRedirectViewController("/documentation/configuration/security", "/configuration/security");
registry.addRedirectViewController("/documentation/swagger-resources", "/swagger-resources");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/documentation/**")
.addResourceLocations("classpath:/META-INF/resources/");
}
}
This puts the page at http://localhost:8080/documentation/swagger-ui.html. However, it also still leaves it at http://localhost:8080/swagger-ui.html
How do I change it from swagger-ui.html
to index.html
?
How do I move it from http://localhost:8080/swagger-ui.html instead of copying it (or just make the original inaccessible)?
If I find/replace the above code for documentation
api
I have another issue because my servlet is already defined at /api.
@SpringBootApplication
@EnableSwagger2
public class SpringApplication extends SpringBootServletInitializer {
@Bean
public ServletRegistrationBean api() {
ServletRegistrationBean registration = new ServletRegistrationBean(new ServletContainer(),"/api/*");
registration.addInitParameter(ServletProperties.JAXRS_APPLICATION_CLASS, SwaggerResourceConfig.class.getName());
registration.setName("api");
return registration;
}
}
public class SwaggerResourceConfig extends ResourceConfig {
public SwaggerResourceConfig() {
register(ApiListingResource.class);
register(SwaggerSerializers.class);
}
}
How can I move swagger-ui to my servlet root instead of my context root?