Reimpreso en: https://blog.csdn.net/hwangfantasy/article/details/66542602
SpringBoot configura SwaggerUI para acceder al pozo 404
Cuando aprendí SpringBoot para construir Restful API, encontré un pequeño hoyo y no pude acceder a él al configurar Swagger UI.
Primero, agregue la dependencia de Swagger en su archivo pom, como se muestra a continuación:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
Luego crea una nueva clase SwaggerConfig:
Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.nightowl"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("NightOwl RESTful APIs")
.description("关注我 http://hwangfantasy.github.io/")
.termsOfServiceUrl("http://hwangfantasy.github.io/")
.contact("颜艺学长")
.version("1.0")
.build();
}
}
Finalmente, agregue una serie de anotaciones API a su controlador. De hecho, se puede usar normalmente sin agregar anotaciones API.
Finalmente, visite localhost: 8080 / swagger-ui.html para ver la página de swagger.
Pero la clave está aquí. La primera vez que lo configuré de esta manera, apareció el siguiente error:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Thu Nov 24 19:57:13 CST 2016
There was an unexpected error (type=Not Found, status=404).
No message available
Pero tengo un nuevo proyecto para reconfigurar sin ningún problema, así que piense en sus propios proyectos sin duda qué configuración y swagger entran en conflicto, y
finalmente encontré application.properties puso
spring.resources.static-locations=classpath:/static/
Comenta esta línea para acceder a ella.
Complemente el segundo método:
Mire la estructura de la dependencia del proyecto en swagger:
Puede ver que swagger-ui.html está en el directorio META-INF / resources, por lo que debemos apuntar manualmente la ruta del recurso estático aquí y configurarlo en Java como:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
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;
/**
* @author xiaqing
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.xqnode.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("接口总览")
.description("测试")
.version("1.0")
.build();
}
/**
* 防止@EnableMvc把默认的静态资源路径覆盖了,手动设置的方式
*
* @param registry
*/
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
// 解决静态资源无法访问
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
// 解决swagger无法访问
registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
// 解决swagger的js文件无法访问
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
Herede WebMvcConfigurationSupport en la clase de configuración de swagger, implemente el método addResourceHandlers y configure los recursos estáticos para que sean accesibles.
Una vez completada la configuración, reinicie el proyecto y podrá acceder a él normalmente a través de http: // localhost: 8080 / swagger-ui.html.