我有一个具有两个不同任务的软件:
基于基本上下文{host} / application / ...]的应用程序任务是使用Springboot初始化的,如下所示:
public static void main(String[] args) { new SpringApplicationBuilder(ApplicationStarter.class).properties(Properties.loadPortProperty()).run(args); } @Bean public ServletRegistrationBean endpoint() { return new ServletRegistrationBean(new ApplicationServlet(), "/application/*"); }
包含大张旗鼓的其余api任务配置如下(我认为目前不需要其余api端点):
到达了完全不同的部署(例如,另一个Web ui)。结果,浏览器为/ api / swagger-ui.html显示http错误404并分别显示无法推断基本URL消息。<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>
@Controller @RequestMapping("/api") public class HomeController { @ApiIgnore @GetMapping(value = "") public void index(HttpServletResponse response) throws IOException { response.sendRedirect("/api/swagger-ui.html"); } }
@Configuration @EnableSwagger2 public class SwaggerDocumentationConfig implements WebMvcConfigurer { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .useDefaultResponseMessages(false) .select() .apis(RequestHandlerSelectors.basePackage("test.package")) .paths(PathSelectors.any()) .build(); } @Override public void addResourceHandlers(final ResourceHandlerRegistry registry) { registry.addResourceHandler("/api/swagger-ui.html**") .addResourceLocations("classpath:/META-INF/resources/swagger-ui.html"); registry.addResourceHandler("/api/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); } @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addRedirectViewController("/api/v2/api-docs", "/v2/api-docs"); registry.addRedirectViewController("/api/swagger-resources/configuration/security", "/swagger-resources/configuration/security"); registry.addRedirectViewController("/api/swagger-resources/configuration/ui", "/swagger-resources/configuration/ui"); registry.addRedirectViewController("/api/swagger-resources", "/swagger-resources"); } }
因此,此配置在我的本地计算机上运行良好。问题是,如果此配置在反向代理后面运行,则我无法到达swagger-ui.html,因为在swagger上进行的重定向没有/ api /
如果我通过项目资源下方的application.properties文件设置/ api /
,则问题是第一个任务(应用程序任务)将其基本上下文更改为/ api / application / ... 不需要...但是如果我愿意的话,招摇的ui会按预期工作。所以我的问题是如何告诉整个招摇部署,它应该使用基本上下文路径/ api /
而不是/?谢谢您的支持,我希望问题是可以理解的:)
我有一个软件,它具有两个不同的任务:假设一个应用程序任务一个rest api任务使用Springboot初始化基本上下文{host} / application / ...上的应用程序任务,如下所示:...
我自己找到了一个解决方案,并将其发布给可能存在相同问题的其他解决方案。我只是为[