Как мне переместить swagger-ui.html, используя springfox и JAX-RS? - PullRequest
0 голосов
/ 20 октября 2018

Я использую 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, у меня возникнет другая проблема, поскольку мой сервлет уже определен в / 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 в мой корень сервлета вместо моего корня контекста?

1 Ответ

0 голосов
/ 20 октября 2018

Я сделал обходной путь для вас.Сначала я создал контроллер с методом, который будет указывать на индекс.

@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, вы должны увидеть свое чванство.

Я только что скопировал html из springfox-swagger-ui * .jar swagger-ui.html и в скрипте springfox.js я изменил строкус

var urlMatches = /(.*)\/swagger-ui.html.*/.exec(window.location.href);

на

var urlMatches = /(.*)\/(.*).*/.exec(window.location.href);

Надеюсь, это поможет вам

...