使用Spring在Swagger UI上出现404错误

时间:2018-06-12 09:58:59

标签: spring-boot

我正在使用Swagger UI与Spring启动应用程序集成。当我击中swagger-ui.html时。我收到404错误。我的配置类如下:

@Configuration
@EnableSwagger2
//@Import(SwaggerConfiguration.class)
public class SwaggerConfig  {
    @Bean
        public Docket api() {
            return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
        }
...

错误讯息:

{"status":404,"message":"HTTP 404 Not Found","link":"https://jersey.java.net/apidocs/2.8/jersey/javax/ws/rs/NotFoundException.html"}

4 个答案:

答案 0 :(得分:1)

希望这会有所帮助,请在下面找到我的有效工作配置:

@Configuration
@EnableSwagger2
@Profile({"!production"})
public class SwaggerConfiguration extends WebMvcConfigurerAdapter {

    @Autowired
    private ServletContext servletContext;


    @Bean
    public Docket api() {

        return new Docket(DocumentationType.SWAGGER_2)
                .host("localhost")
                .directModelSubstitute(LocalDate.class, Date.class)
                .pathProvider(new RelativePathProvider(servletContext) {
                    @Override
                    public String getApplicationBasePath() {
                        return "/";
                    }
                })
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }
}

答案 1 :(得分:1)

我遇到了类似的问题,其中/swagger-ui.html(或新的端点版本/ swagger-ui /)返回404,但/ v2 / api-docs返回了有效的json。解决的办法是将摇摇欲坠的版本从3.0.0降级。到2.9.2。

答案 2 :(得分:0)

您的配置类之一中是否有@EnableWebMvc?如果是这样,您将必须手动进行资源配置,如下所示:

@Override
public void addResourceHandlers (ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/swagger-ui.html**")
            .addResourceLocations("classpath:/META-INF/resources/swagger-ui.html");
    registry.
            addResourceHandler("/webjars/**")
            .addResourceLocations("classpath:/META-INF/resources/webjars/");
}

答案 3 :(得分:0)

如果您使用的是版本 > 3,只需使用 IDAT 而不是 /swagger-ui/