【问题标题】:Swagger UI Giving 404 with Spring Boot ApplicationSwagger UI Giving 404 with Spring Boot Application
【发布时间】:2021-05-18 11:35:49
【问题描述】:

我目前正在尝试将 swagger 添加到我非常基本的休息服务中。 (很多实体,但没有什么比简单的杂物更花哨的东西了)我正在关注本教程,https://www.youtube.com/watch?v=gduKpLW_vdY,一切正常,直到 swagger ui 部分。我能够在邮递员和浏览器中获取 v2/api-docs,但 UI 不断返回 404。我应该注意我的服务当前确实需要 TLS,但即使我禁用它,我也会得到相同的结果,所以我没有认为这是相关的。根据视频,我只需要两个依赖项和一个启用 Swagger2 标记,所以我不确定可能出了什么问题。

这是我的 pom,

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
   <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>2.3.3.RELEASE</version>
       <relativePath/> <!-- lookup parent from repository -->
   </parent>
 <groupId>my.basic.project</groupId>
 <artifactId>my-basic-service</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>jar</packaging>
 
 <properties>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 </properties>
 
 <dependencies>
   <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
   <dependency>
       <groupId>org.apache.httpcomponents</groupId>
       <artifactId>httpclient</artifactId>
   </dependency>
   
   <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <scope>test</scope>
   </dependency>
   
   <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
   <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>
   
   
   <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
       </dependency>
   <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-core</artifactId>
   </dependency>
   <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-annotations</artifactId>
   </dependency>
   <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
   </dependency>
   <dependency>
       <groupId>com.h2database</groupId>
       <artifactId>h2</artifactId>
       <scope>runtime</scope>
   </dependency>
   <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
           <scope>test</scope>
           <exclusions>
               <exclusion>
                   <groupId>org.junit.vintage</groupId>
                   <artifactId>junit-vintage-engine</artifactId>
               </exclusion>
           </exclusions>
       </dependency>
   <!-- https://mvnrepository.com/artifact/org.json/json -->
   <dependency>
       <groupId>org.json</groupId>
       <artifactId>json</artifactId>
       <version>20140107</version>
   </dependency>
   
   <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
       </dependency>

       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-tomcat</artifactId>
           <scope>provided</scope>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-data-jpa</artifactId>
           </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
           <scope>test</scope>
           <exclusions>
               <exclusion>
                   <groupId>org.junit.vintage</groupId>
                   <artifactId>junit-vintage-engine</artifactId>
               </exclusion>
           </exclusions>
       </dependency>
       <dependency>
           <groupId>org.springframework.kafka</groupId>
           <artifactId>spring-kafka</artifactId>
       </dependency>
       <dependency>
           <groupId>com.vladmihalcea</groupId>
           <artifactId>hibernate-types-52</artifactId>
           <version>2.9.13</version>
       </dependency>
       <dependency>
           <groupId>org.postgresql</groupId>
           <artifactId>postgresql</artifactId>
       </dependency>
 </dependencies>
</project>

这是我的(简单的)swagger 配置文件。

@Configuration
@EnableSwagger2
public class SwaggerConfig{
    
    

}

最后是我的相关春季日志。

2021-02-15 09:42:10.815  INFO 19112 --- [           main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
2021-02-15 09:42:10.930  INFO 19112 --- [           main] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
2021-02-15 09:42:11.488  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: allUsingGET_1
2021-02-15 09:42:11.495  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getByIdUsingGET_1
2021-02-15 09:42:11.508  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: allUsingGET_2
2021-02-15 09:42:11.515  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getByIdUsingGET_2
2021-02-15 09:42:11.527  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: allUsingGET_3
2021-02-15 09:42:11.535  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getByIdUsingGET_3
2021-02-15 09:42:11.546  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: allUsingGET_4
2021-02-15 09:42:11.554  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getByIdUsingGET_4
2021-02-15 09:42:11.564  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: allUsingGET_5
2021-02-15 09:42:11.570  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getByIdUsingGET_5
2021-02-15 09:42:11.601  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: allUsingGET_6
2021-02-15 09:42:11.604  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getByIdUsingGET_6
2021-02-15 09:42:11.612  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: allUsingGET_7
2021-02-15 09:42:11.623  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getByIdUsingGET_7
2021-02-15 09:42:11.638  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: allUsingGET_8
2021-02-15 09:42:11.666  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getByIdUsingGET_8
2021-02-15 09:42:11.675  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: allUsingGET_9
2021-02-15 09:42:11.679  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getByIdUsingGET_9
2021-02-15 09:42:11.693  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: allUsingGET_10
2021-02-15 09:42:11.702  INFO 19112 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getByIdUsingGET_10
2021-02-15 09:42:11.728  INFO 19112 --- [           main] DeferredRepositoryInitializationListener : Triggering deferred initialization of Spring Data repositories…
2021-02-15 09:42:12.746  INFO 19112 --- [         task-1] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2021-02-15 09:42:12.768  INFO 19112 --- [         task-1] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2021-02-15 09:42:13.486  INFO 19112 --- [           main] DeferredRepositoryInitializationListener : Spring Data repositories initialized!
2021-02-15 09:42:13.497  INFO 19112 --- [           main] g.g.a.c.MyApplication        : Started MyApplication in 14.575 seconds (JVM running for 15.673)
2021-02-15 09:42:32.796  INFO 19112 --- [nio-8080-exec-7] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2021-02-15 09:42:32.797  INFO 19112 --- [nio-8080-exec-7] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2021-02-15 09:42:32.812  INFO 19112 --- [nio-8080-exec-7] o.s.web.servlet.DispatcherServlet        : Completed initialization in 15 ms
2021-02-15 09:43:23.793  WARN 19112 --- [nio-8080-exec-5] o.s.web.servlet.PageNotFound             : No mapping for GET /swagger-ui
2021-02-15 09:43:27.773  WARN 19112 --- [nio-8080-exec-1] o.s.web.servlet.PageNotFound             : No mapping for GET /swagger-ui.html

【问题讨论】:

    标签: java spring-boot maven swagger swagger-ui


    【解决方案1】:

    通常看到该配置,我认为您缺少Docket bean:

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2).select()
                .apis(RequestHandlerSelectors.basePackage("name.of.your.base.package")).paths(PathSelectors.any())
                .build().apiInfo(apiInfo()).enable(isEnabled);
    }
    
    // Most of this fields can be left empty
    private ApiInfo apiInfo() {
    
        ApiInfo apiInfo = new ApiInfo("my-api", "API Description", "v1",
                termsOfServiceUrl, new Contact("Company name",
                url, email),
                "LICENSE", termsOfServiceUrl, Collections.emptyList());
        return apiInfo;
    }
    

    【讨论】:

    • 不幸的是,添加这些方法并没有改变任何东西。
    猜你喜欢
    • 2023-01-04
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多