如何在Dropwizard中配置自定义路径访问Swagger UI
Dropwizard 配置Swagger UI自定义访问路径方案
- 配置静态资源映射
首先将拉取到的完整dist文件夹放入项目的src/main/resources/assets目录,无assets目录可手动新建。在项目启动类的initialize方法中注册静态资源Bundle:
为避免API接口路径和静态资源路径冲突,建议在@Override public void initialize(Bootstrap<你的配置类名> bootstrap) { // 三个参数分别为:静态资源在classpath下的路径、对外暴露的访问路径、默认索引文件 bootstrap.addBundle(new AssetsBundle("/assets/dist", "/dist", "index.html")); // 新增openapi资源映射,保证你的yaml文件可正常访问 bootstrap.addBundle(new AssetsBundle("/assets/openapi", "/openapi", null)); }run方法中指定API接口前缀:@Override public void run(你的配置类名 configuration, Environment environment) { environment.jersey().setUrlPattern("/api/*"); // 其余原有接口注册逻辑保留 } - 调整Swagger UI配置
保持dist文件夹下index.html中的openapi路径配置不变即可:url: "/openapi/openapi.yaml",确保你的openapi.yaml文件已放在src/main/resources/assets/openapi目录下。 - 本地域名绑定(可选)
如需使用dropwizard-project-work.com访问,在本地hosts文件中添加映射规则:
Dropwizard默认应用端口为8080,无特殊修改直接启动服务即可。127.0.0.1 dropwizard-project-work.com - 跨域问题修复(按需配置)
若访问时出现跨域报错,在run方法中添加CORS过滤器:final FilterRegistration.Dynamic cors = environment.servlets().addFilter("CORS", CrossOriginFilter.class); cors.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM, "*"); cors.setInitParameter(CrossOriginFilter.ALLOWED_HEADERS_PARAM, "X-Requested-With,Content-Type,Accept,Origin"); cors.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM, "OPTIONS,GET,PUT,POST,DELETE,HEAD"); cors.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*"); - 验证访问
服务启动成功后,直接访问http://dropwizard-project-work.com:8080/dist即可进入Swagger UI界面。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

