Излишне говорить, что я знаю, что есть тонна вопросов по этому же вопросу, но я застрял, пытаясь исправить это в течение 2 дней, и большинство из того, что я прочитал, устарело.Интеграция Spring Swagger-ui
Так что да .. это то, что я прямо сейчас:
Gradle:
dependencies {
compile 'org.springframework.cloud:spring-cloud-starter-hystrix'
compile 'org.springframework.boot:spring-boot-starter-web'
compile 'org.springframework.boot:spring-boot-starter-actuator'
compile 'org.springframework.boot:spring-boot-starter-security'
compile 'org.springframework.ws:spring-ws-core'
compile 'io.springfox:springfox-swagger2:2.4.0'
compile 'io.springfox:springfox-swagger-ui:2.4.0'
}
Основной класс:
@EnableSwagger2
public class Application {
public static void main(String[] args) {
SpringApplication.run(FeedServiceApplication.class, args);
}
@Bean
public Docket swaggerSettings() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.pathMapping("/");
}
Когда я посещаю: http://localhost:8080/v2/api-docs, я получаю документацию JSon просто хорошо. Кроме того, когда я загружаю swagger-ui из github, установите источник в ссылку выше и запустите его на рабочем столе, он также отлично работает. То, что не работает, заключается в объединении этих двух вещей (получение его для работы в http://localhost:8080/swagger-ui.html).
Есть много учебников, такие, как эти, где они утверждают, что материал выше сделает чванство-щий работой:
http://kubecloud.io/guide-using-swagger-for-documenting-your-spring-boot-rest-api/
http://www.baeldung.com/swagger-2-documentation-for-spring-rest-api
И масса других учебных пособий, где они инструктируют вас добавьте папку dist из swagger-ui git в свой проект.
отображения Кроме того, как это:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("**/swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("**/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
не удается, а также, бросать Scope «запрос» не является активным для текущего потока; исключение.
После того, как вы попробовали некоторые учебные пособия с YouTube, те, которые были связаны выше и многие другие, все, что я видел, это «страница не найдена». Если бы кто-нибудь мог объяснить, что я пропущу, я был бы очень благодарен.
TL: DR Как заставить swagger-ui.html работать?
EDIT: найдено решение.
В случае, если кто-то еще наткнулся на это, проблема в том, что если у вас есть сопоставление запросов, которое принимает параметр @RequestMapping("/{param}")
, диспетчерServlet больше не отображает/** в ResourceHttpRequestHandler. Следующий код исправляет эту проблему.
@Configuration
@EnableAutoConfiguration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurerAdapter{
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any()).build();
}
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
The swagger-ui, который вы должны использовать, - это тот, который предоставляется springfox, и который использует webjar, поэтому файлы html или css не устанавливаются вручную в вашем webapp. –
Спасибо за помощь. Застрял в той же проблеме. –