1. 程式人生 > >[springboot::]整合swagger2,構建RESTful api

[springboot::]整合swagger2,構建RESTful api

1.本來以為會很容易整合的,結果一直報404,試了好久,心累…最後終於找到解決辦法
http://localhost:8080/swagger-ui.html 訪問不到,原因是,是因為 MVC 沒有找到 swagger-ui 包中的 swagger-ui.html 檔案; 但是這個檔案在jar包中是切實存在的.以下是具體程式碼
首先是swagger的配置

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class Swagger2 {

    @Bean
    public Docket createRestApi(){
        System.out.println("======  SWAGGER CONFIG  ======");
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller")) //掃描的請求controler
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("swagger2構建RESTful Api ")
                .description("介面文件")
                .contact("ningL")
                .version("1.0")
                .build();
    }
}

3.按理說這樣swagger就已經配置好了,但是如果出現404的么蛾子,請在配置包中 新增一個相當於配置mvc 靜態資源的類

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MVCconfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    //新增一些靜態資源 圖片,樣式 等
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        // 解決 SWAGGER 404報錯
        registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

4.啟動專案,訪問http://localhost:8080/swagger-ui.html,看看有沒有解決,反正我的是解決了
在這裡插入圖片描述