Springboot swagger url 显示 WhiteLabel 错误页面

use*_*119 7 java spring gradle spring-boot

这是我的代码:我从 application.properties 文件 SwaggerConfig.java 获取所有值

@Configuration
@EnableSwagger2
@Profile("!prod")
@PropertySource(value = { "classpath:application.properties" })
public class SwaggerConfig {

    @Value("${swagger.api.title}")
    private String title;

    @Value("${swagger.api.description}")
    private String description;

    @Value("${swagger.api.termsOfServiceUrl}")
    private String termsOfServiceUrl;

    @Value("${swagger.api.version}")
    private String version;

    @Value("${swagger.api.controller.basepackage}")
    private String basePackage;


    @Bean
    public Docket postMatchApi() {
        return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.basePackage(basePackage))
                .paths(PathSelectors.ant("/**")).build().apiInfo(metaData());
    }

    private ApiInfo metaData() {
        return new ApiInfoBuilder().title(title).description(description).termsOfServiceUrl(termsOfServiceUrl)
                .version(version).build();
    }
Run Code Online (Sandbox Code Playgroud)

这是我的 springboot 初始化程序:

@SpringBootApplication
@ComponentScan(basePackages = { "com.example.demo" })
@ComponentScan(basePackageClasses = {AppInitializer.class, SwaggerConfig.class})
@EnableAsync
@EnableRetry
public class AppInitializer{

    public static void main(String[] args) {
        SpringApplication.run(AppInitializer.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

ServletInitializer.java

public class ServletInitializer extends SpringBootServletInitializer implements WebApplicationInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(PostMatchAppInitializer.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

日志说它已映射:

[INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[],methods=[POST],consumes=[application/json],produces=[application/json]}" onto public <T> org.springframework.http.ResponseEntity<?> com.,org.springframework.validation.BindingResult) throws java.lang.Exception
    [INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/v2/api-docs],methods=[GET],produces=[application/json || application/hal+json]}" onto public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)
    [INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/swagger-resources/configuration/ui]}" onto org.springframework.http.ResponseEntity<springfox.documentation.swagger.web.UiConfiguration> springfox.documentation.swagger.web.ApiResourceController.uiConfiguration()
    [INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/swagger-resources]}" onto org.springframework.http.ResponseEntity<java.util.List<springfox.documentation.swagger.web.SwaggerResource>> springfox.documentation.swagger.web.ApiResourceController.swaggerResources()
    [INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/swagger-resources/configuration/security]}" onto org.springframework.http.ResponseEntity<springfox.documentation.swagger.web.SecurityConfiguration> springfox.documentation.swagger.web.ApiResourceController.securityConfiguration()
    [INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
    [INFO ] 2018-01-17 16:46:37.071 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
    [INFO ] 2018-01-17 16:46:37.227 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerAdapter - Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@5e89f6: startup date [Wed Jan 17 16:46:34 CST 2018]; root of context hierarchy
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

    [WARN ] 2018-01-17 16:46:42.217 [http-nio-8082-exec-1] o.s.w.s.PageNotFound - No mapping found for HTTP request with URI [/example/swagger-ui.html] in DispatcherServlet with name 'dispatcherServlet'
Run Code Online (Sandbox Code Playgroud)

小智 22

对于新的 Springfox 版本(3.0.0),您需要做一些不同的事情

在 pom.xml 中添加以下依赖项

*

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

而不是两个 for <artifactId>springfox-swagger2</artifactId> and <artifactId>springfox-swagger-ui</artifactId>

并访问 ../swagger-ui/ 而不是 ../swagger-ui.html

  • 是的,注意最后的斜线!`http://localhost:8080/swagger-ui/` (4认同)

dha*_*ran 10

对于 Swagger 3.0,URL 已更改

http://localhost:8080/swagger-ui/index.html


use*_*119 6

我发现了问题所在,在其中一个配置文件中,我以某种方式具有 @EnableMvc 注释,因为 dispatcherservlet 正在寻找映射 /example/swagger-ui.html 并且由于找不到映射,因此它抱怨“没有映射成立”。

删除@EnableMvc 后,它工作得很好。


小智 6

对于像我这样仍然出现“白标”页面错误的其他人,请检查您是否有:

<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger-ui</artifactId>
   <version>2.8.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

在您的pom.xml文件中,不仅需要官方文档页面显示的“springfox-swagger2”依赖项,您还需要“springfox-swagger-ui”。


小智 6

我遇到了同样的问题。所以基本上如果你使用 spring 3 或更高版本然后打开 swagger 页面,你只需要做 3 件事。

  1. 在pom.xml中添加3个依赖

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
    </dependency>
    
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2 </artifactId>
        <version>3.0.0</version>
    </dependency>
    
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>3.0.0</version>
    </dependency>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建一个配置文件。

     import org.springframework.context.annotation.Bean;
     import org.springframework.context.annotation.Configuration;
     import springfox.documentation.spi.DocumentationType;
     import springfox.documentation.spring.web.plugins.Docket;
     import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
     @Configuration
     @EnableSwagger2
     public class SwaggerConfig {
        @Bean
        public Docket api() {
           return new Docket(DocumentationType.SWAGGER_2);    
     }    
    
    Run Code Online (Sandbox Code Playgroud)

    }

  3. 打开此链接以访问 API。

http://localhost:8080/swagger-ui/

现在只需匹配您错过的步骤即可。如果你被困在某个地方,一定要问一下。


小智 5

我英语不好,所以才用谷歌翻译。

\n\n

那个版本和实现方式已经有点过时了,如果你希望自动生成文档,SpringDoc 简化了 API 文档的生成和维护,基于 OpenAPI 3 规范,适用于 Spring Boot 1.x 和 2.x 。应用程序。

\n\n

为了让魔法发生,我们只需将依赖项添加到我们的 pom 中:

\n\n
\n\n    <dependency>\n        <groupId>org.springdoc</groupId>\n        <artifactId>springdoc-openapi-ui</artifactId>\n        <version>1.2.32</version>\n    </dependency>\n\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后访问已有的描述http://localhost:8080/v3/api-docs/

\n\n

对于招摇来说: http://localhost:8080/swagger-ui.html

\n\n

这里的所有都是它的。

\n\n

了解更多详情

\n\n

如果你想自定义 api 信息,你可以包含 java 风格的注释:

\n\n
\n\n    @OpenAPIDefinition(\n        info = @Info(\n                 title = "API personas", \n                 description = "Este es un ejemplo de servidor Personas-Server."\n            + "Usted puyede encontrar mas acerca de Swagger " ++"[http://swagger.io](http://swagger.io) o en "\n            + "[irc.freenode.net, #swagger](http://swagger.io/irc/).",\n            termsOfService = "http://swagger.io/terms/", \n              license = @License(\n                          name = "Apache 2.0", \n                          url = "http://springdoc.org"), \n       version = "otra"\n    ))\n    @Tag(name = "persona", description = "API para personas")\n    @RestController\n    @RequestMapping("persona")\n    public class PersonaRest extends GeneralRest {}\n\n
Run Code Online (Sandbox Code Playgroud)\n\n

也可以为特殊方法生成:

\n\n
\n\n     @Operation(\n         summary = "traer todas las personas", \n         description = "api para traer todas las personas, aqui no se tienen en cuenta paginaciones, ni filtros, trae todos los registros", \n         tags = { "persona" }\n         )\n     @ApiResponses(\n         value = {\n         @ApiResponse(\n             responseCode = "200", \n             description = "Operaci\xc3\xb3n exitosa", \n             content = @Content(\n                 mediaType = "application/json", \n                 array = @ArraySchema(\n                     schema = @Schema(\n                         implementation = PersonaTO.class\n                         )))),\n         @ApiResponse(\n             responseCode = "401", \n             description = "Sin autorizaci\xc3\xb3n", \n             content = @Content(\n                 mediaType = "application/json", \n                 schema = @Schema(\n                     implementation = Object.class\n                     ))),\n     })\n     @GetMapping\n     public List personas() {\n            return personaServicio.obtenerTodo();\n        }\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用最新的库和包含内容始终是一个好习惯。

\n


归档时间:

查看次数:

17942 次

最近记录:

4 年,4 月 前