当前位置: 首页 > 知识库问答 >
问题:

如何使用springfox和JAX-RS重定位swagger-ui.html?

冯卓
2023-03-14

我使用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/");
  }

}

如果我为文档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根而不是我的上下文根?

共有1个答案

仲孙德惠
2023-03-14

我为你做了变通。首先,我创建了带有方法的控制器,该方法将指向索引。

@Controller
public class SwaggerUIRedirectController {

    @RequestMapping("/index")
    public String uiRedirectLink() {
        return "index";
    }

}

现在创建src/main/resources/templates文件index.html,并将此文件https://github.com/sikynko/swaggerworkaround/blob/master/index.html中的内容复制到您的文件中。

现在在src/main/resources/statig/springfox.js下创建并从

var urlMatches = /(.*)\/swagger-ui.html.*/.exec(window.location.href);
var urlMatches = /(.*)\/(.*).*/.exec(window.location.href);
 类似资料:
  • 我使用的是swagger版本2.2.2。如果我转到地址http://localhost:8080/swagger-ui.html,我将直接获得swagger UI。有没有办法,一个安全层可以增加,像,用户应该提示输入用户id和密码之前,大摇大摆的UI显示?

  • 问题内容: 该CXF文档中提到缓存为高级HTTP: CXF JAXRS通过处理If-Match,If-Modified-Since和ETags标头,提供了对许多高级HTTP功能的支持。JAXRS Request上下文对象可用于检查前提条件。还支持Vary,CacheControl,Cookie和Set-Cookies。 我真的对使用(或至少探索)这些功能感兴趣。但是,尽管“提供支持”听起来确实很有

  • 我正在开发一个java脚本客户端应用程序,在服务器端我需要处理CORS,所有我用JAX-RS和Jersey编写的服务。我的代码: 感谢佛普尼

  • 但对于本地时间来说,我仍然在swagger-ui的示例和模型中得到这些 我读过一些东西,swagger规范不使用时间格式。这是不是有些关联?

  • 我正在尝试在具有两个应用程序类的 Java 应用程序上实现 Swagger,因为一个处理“公共”Web 服务,另一个处理“管理”Web 服务。我正在尝试生成两个单独的 swagger.json 文件,每个应用程序类一个。但是,仅为两个 url 生成其中一个。下面是一些代码: 公共应用程序类: 私有应用程序类: 现在,如果我点击这些URL中的任何一个,我都会得到相同的“公共”swagger json