在Swagger UI上接收到404错误(带Spring)

muk1a3rh  于 2022-11-06  发布在  Spring
关注(0)|答案(7)|浏览(239)

我正在集成swagger UI和Sping Boot 应用程序。当我点击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"}
tcbh2hod

tcbh2hod1#

我也遇到过类似的问题,/swagger-ui. html(或者新的端点版本/swagger-ui/)返回了404,但是/v2/api-docs返回了一个有效的json。解决方案是将swagger版本从3.0.0降级到2.9.2。

kuhbmx9i

kuhbmx9i2#

希望这有帮助,请找到我的工作swagger配置如下:

@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();
    }
}
y53ybaqx

y53ybaqx3#

如果您使用的是版本〉3,请使用/swagger-ui/而不是swagger-ui.html

p5fdfcr1

p5fdfcr14#

我也遇到了同样的问题,通过用springfox-boot-starter:3.0.0替换springfox-swagger 2和springfox-swagger-ui依赖项并删除@EnableSwagger2注解,这个问题得到了解决。请注意,Swagger的URL也从http://localhost:8080/swagger-ui.html更改为http://localhost:8080/swagger-ui/index.html。

rn0zuynd

rn0zuynd5#

您的配置类中是否有@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/");
}
jyztefdp

jyztefdp6#

请将以下依赖关系引入pom.xml

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>
mwg9r5ms

mwg9r5ms7#

我在使用springfox-boot-starter:3.0.0的spring-boot中遇到了一个几乎类似的问题,其中swagger UI将显示为空,并在控制台上显示404
如果您有任何问题,请与我们联系。
错误是我在文档URL末尾添加的“/”
我正在写“http://{ip}:{port}/自定义/url/swagger-ui/索引.html/”
而不是
“您可以在此查看您的IP地址。”
请注意结尾处的“/”

相关问题