带有弹簧靴 2.0 的摇摆不定导致 404 错误页面

2022-09-01 12:28:54

我正在尝试将我的Spring Boot版本与Swagger集成。2.0.1.RELEASE

从这篇博客文章中可以看出,只需添加两个Maven依赖项即可轻松完成,一切都应该可以正常工作。

因此,我在 pom 中添加了以下依赖项:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.8.0</version>
</dependency>

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.8.0</version>
</dependency>

并创建了豆子:SwaggerConfig

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

在属性文件中,在尝试使其工作时,我最终得到了以下3个条目:

spring.application.name=cat-service
management.server.servlet.context-path=/cat-service
server.servlet.contextPath=/cat-service

但最后,当访问时

http://localhost:8080/cat-service/api/v2/api-docs

或 UI 页面位于

http://localhost:8080/cat-service/swagger-ui.html

我收到一个错误。page not found

我在swagger github页面中发现了这个问题,在stackoverflow中发现了这个问题,但我无法更改我的错误。404


答案 1

我能够使它与Spring启动版本和这篇博客文章一起使用:2.0.4.RELEASE

我添加了这些依赖项:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

和这个配置文件:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SpringFoxConfig {
    @Bean
    public Docket apiDocket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }
}

它奏效了。

Swagger UI 可以在 /swagger-ui 访问.html#


答案 2

请检查参考:https://springfox.github.io/springfox/docs/current/

“2.1.3. 从现有的 2.x 版本迁移”

你可以从你的 pom 中删除 springfox-swagger2 和 springfox-swagger-ui.xml并添加 springfox-boot-starter(例如版本 3.0.0)。您也可以删除@EnableSwagger2注释

而且:“swagger-ui位置已经从 https://host/context-path/swagger-ui.html 转移到 https://host/context-path/swagger-ui/index.htmlhttps://host/context-path/swagger-ui/ 简称。这使得它更好地工作,将其作为Web jar拉出,并在不需要时使用配置属性将其关闭。


推荐