SpringBoot集成Swagger2遇到異常:請求不到swagger-ui.html

我們在使用SpringBoot集成Swagger2中,訪問:http://localhost/swagger-ui.html

出現問題,頁面顯示默認報錯頁面。後臺報錯:

No mapping found for HTTP request with URI [/swagger-ui.html] in DispatcherServlet with name ‘dispatcherServlet’

解決方案

這個錯誤,是因爲靜態資源路徑映射問題導致。
我們在訪問http://localhost/swagger-ui.html時,這個swagger-ui.html相關的所有前端靜態文件都在springfox-swagger-ui-2.4.0.jar裏面。目錄如下:
在這裏插入圖片描述
SpringBoot自動配置本身並不會把/swagger-ui.html這個路徑映射到對應的目錄META-INF/resources/下面。我們加上這個映射即可。構建一個WebMvcConfig 類,代碼如下:

package com.demo;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
    @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/");
    }
}

需要特別說明一下的是,Swagger2.java這個類一定要配置正確。

package com.demo;

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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class Swagger2 {

    /**
     * @Description:swagger2的配置文件,這裏可以配置swagger2的一些基本的內容,比如掃描的包等等
     */
    @Bean
    public Docket createRestApi() {

        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
            .apis(RequestHandlerSelectors.basePackage("com.demo.controller"))
            .paths(PathSelectors.any()).build();
    }
    
    /**
     * @Description: 構建api文檔的信息
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
            // 設置頁面標題
            .title("標題")
            // 設置聯繫人
            .contact(
                new Contact("暱稱", "網址鏈接", "郵箱"))
            // 描述
            .description("描述信息")
            // 定義版本號
            .version("版本號").build();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章