spring-boot - 如何使用 springfox 和 JAX-RS 重新定位 swagger-ui.html?
问题描述
我将 JAX-RS 与 Spring Boot 和 springfox 一起使用以从注释中生成 swagger-ui。
目前文档位于http://localhost:8080/swagger-ui.html
但是,我现在需要将其移至http://localhost:8080/api/index.html
在此问题评论之后,我有一个如下所示的类:
@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/");
}
}
这会将页面置于http://localhost:8080/documentation/swagger-ui.html。但是,它仍然保留在http://localhost:8080/swagger-ui.html
我如何将其从 更改swagger-ui.html
为index.html
?
如何从http://localhost:8080/swagger-ui.html移动它而不是复制它(或者只是使原始无法访问)?
如果我找到/替换上面的代码,documentation
api
我还有另一个问题,因为我的 servlet 已经在 /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);
}
}
如何将 swagger-ui 移动到我的 servlet 根目录而不是我的上下文根目录?
解决方案
我为你做了解决方法。首先,我使用指向索引的方法创建了控制器。
@Controller
public class SwaggerUIRedirectController {
@RequestMapping("/index")
public String uiRedirectLink() {
return "index";
}
}
现在在 src/main/resources/templates 文件 index.html 下创建并将内容从该文件 https://github.com/sikynko/swagger_workaround/blob/master/index.html复制 到您的文件中。
现在在 src/main/resources/static/springfox.js 下创建并复制内容
https://github.com/sikynko/swagger_workaround/blob/master/springfox.js
进入你的。现在,当您编写http://localhost:8080/index时,您应该会看到自己的招摇。
我刚刚从 springfox-swagger-ui*.jar swagger-ui.html 和脚本 springfox.js 中复制了 html,我已经从
var urlMatches = /(.*)\/swagger-ui.html.*/.exec(window.location.href);
上
var urlMatches = /(.*)\/(.*).*/.exec(window.location.href);
我希望它会帮助你
推荐阅读
- r - 错误:- R 的闪亮应用中的“数学函数中的非数字参数”
- javascript - react js中类组件重构为函数组件
- 3dsmax - “渲染到纹理”对话框中的“填充”有什么用?还有什么样的选定对象设置是“启用”的?
- c++ - C++11 简化了调用同一模板函数的不同特化的模板函数的语法
- elasticsearch - Elsticsearch - 限制匹配单独条件的结果数量
- jmeter - 使用 JMeter 记录 Microsoft Edge
- ms-access - 通过 MS Access 更新雪花表?
- r - 将 for 循环迭代包含到 R 中的数据帧中
- javascript - 如何在charts.js的饼图工具提示中添加千位分隔符
- python - AADSTS50011:请求中指定的回复 URL 与为应用程序 Python 配置的回复 URL 不匹配