web-dev-qa-db-ja.com

Spring Boot 2.0でSwaggerを実行すると404エラーページが表示される

Spring Bootバージョン2.0.1.RELEASESwagger と統合しようとしています。

これから ブログ投稿 Mavenの依存関係を2つ追加するだけで簡単になり、すべてが機能するようになりました。

そこで、次の依存関係を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 Beanを作成しました:

@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エラーを変更できませんでした。

7
riorio

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#でアクセスできます

10
riorio

最初に、このようなSpringbootファイルと同じパッケージにSwaggerConfig.Javaファイルを追加します。

@Configuration
@EnableSwagger2
@EnableWebMvc
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/");
   }

}

これを試してください{ http:// localhost:8080/spring-security-rest/api/swagger-ui.html }または{ http:// localhost:8080/spring-security- rest/swagger-ui.html }

動作しない場合は、application.propertiesのパスを変更してみましょう

これをファイルに追加します

server.servlet-path=/my-service

これを試してみてください http:// localhost:8080/my-service/swagger-ui.html (UI Docs)

http:// localhost:8080/loop-service/v2/api-docs (JSON Docs)

結果: enter image description here

2
Exel Staderlin

@EnableWebMvcを削除した後、機能しました

0
gstackoverflow

変更することを忘れないでくださいserver.contextPathからserver.servlet.contextPath Spring Bootを2+にアップグレードする場合。

0
priam

別の可能性は、Swagger構成ファイルの場所です。 Spring Bootファイルの同じパッケージまたはサブパッケージに配置する必要があります。上の写真のように:

Swagger config and Spring Boot file hierarchy

0
Camilo