Swagger-ui.html 给出空白页
Swagger-ui.html is giving blank page
当我尝试在我的 spring 引导应用程序中启用 swagger 时,它显示空白页面。
我正在使用 url https://localhost:8080/context-path/swagger-ui/
我能够获取 url 的 JSON 数据 https://localhost:8080/context-path/v2/api/docs
我不知道这是哪里出了问题,因为 swagger ui 谁能帮我解决这个问题。提前致谢。
Swagger 配置文件
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 SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
我在pom.xml
中添加了依赖项
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.1 </version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
我有这样的控制器
@GetMapping public ResponseEntity<ProjectDto> getAllProjects() { ProjectDto projectDto = new ProjectDto(); try { List<ProjectDto> projectDtos = projectService.getAllProjects(); projectDto.setProjectDtos(projectDtos.stream().collect(Collectors.toSet())); return new ResponseEntity<>(projectDto, HttpStatus.OK); } catch (ProjectNotFoundException exception) { LOGGER.info(exception.getMessage(), exception); projectDto.setErrorMsg(exception.getMessage()); return new ResponseEntity<>(projectDto, HttpStatus.BAD_REQUEST); } catch (Exception exception) { LOGGER.info(exception.getMessage(), exception); projectDto.setErrorMsg("Something went wrong with projects"); return new ResponseEntity<>(projectDto, HttpStatus.INTERNAL_SERVER_ERROR); } }
springfox-boot-starter 附带 swagger-ui 和 swagger-2 Reference
能否请您尝试删除显式添加的依赖项和访问权限
/swagger-ui/ 或 /swagger-ui/index.html
您是否尝试过在所有依赖项中使用相同的 Springfox 版本,如下所示?
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0</version>
</dependency>
尽管如此,我知道这并不能直接解决您的问题,但我建议您考虑迁移到 springdoc。 Springfox 在这一点上有很多错误,使用起来很痛苦。我在 2 年前搬到了 springdoc
,因为它支持 Spring WebFlux,对此我感到非常高兴。此外,它还支持 Kotlin Coroutines,我不确定 Springfox 是否支持。
如果您决定迁移,springdoc
甚至还有一个 migration guide。
经过很长时间它对我有用,在我的应用程序中,我使用 spring 安全性,因此配置不匹配。这就是我得到空白页的原因。
我在安全配置和 JwtTokenAUthenticationFilter 中进行了以下更改 classes
内部配置(HttpSecurity http), .antMatchers("/login","/","/project/jira/update","/leave",
"/v2/api-docs",
"/swagger-ui.html").permitAll();
内部配置(WebSecurity web),web.ignoring().antMatchers("/swagger-resources/", "/webjars/" )
.antMatchers(HttpMethod.OPTIONS, "/**");
JwtTokenAUthentication 过滤器class
- 在 JwtTokenAuthenticationFilter 的 doFilterInternal 内部 -> uri.indexOf("swagger") >= 0 || “/{上下文路径}/v2/api-docs”.equals(uri)
或uri.contains("招摇")||uric.contains("/v2/api/docs")
这里uri的意思是HttpServletRequest.getRequestURI();
当我尝试在我的 spring 引导应用程序中启用 swagger 时,它显示空白页面。 我正在使用 url https://localhost:8080/context-path/swagger-ui/ 我能够获取 url 的 JSON 数据 https://localhost:8080/context-path/v2/api/docs 我不知道这是哪里出了问题,因为 swagger ui 谁能帮我解决这个问题。提前致谢。
Swagger 配置文件
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 SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
我在pom.xml
中添加了依赖项<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.1 </version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
我有这样的控制器
@GetMapping public ResponseEntity<ProjectDto> getAllProjects() { ProjectDto projectDto = new ProjectDto(); try { List<ProjectDto> projectDtos = projectService.getAllProjects(); projectDto.setProjectDtos(projectDtos.stream().collect(Collectors.toSet())); return new ResponseEntity<>(projectDto, HttpStatus.OK); } catch (ProjectNotFoundException exception) { LOGGER.info(exception.getMessage(), exception); projectDto.setErrorMsg(exception.getMessage()); return new ResponseEntity<>(projectDto, HttpStatus.BAD_REQUEST); } catch (Exception exception) { LOGGER.info(exception.getMessage(), exception); projectDto.setErrorMsg("Something went wrong with projects"); return new ResponseEntity<>(projectDto, HttpStatus.INTERNAL_SERVER_ERROR); } }
springfox-boot-starter 附带 swagger-ui 和 swagger-2 Reference
能否请您尝试删除显式添加的依赖项和访问权限 /swagger-ui/ 或 /swagger-ui/index.html
您是否尝试过在所有依赖项中使用相同的 Springfox 版本,如下所示?
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0</version>
</dependency>
尽管如此,我知道这并不能直接解决您的问题,但我建议您考虑迁移到 springdoc。 Springfox 在这一点上有很多错误,使用起来很痛苦。我在 2 年前搬到了 springdoc
,因为它支持 Spring WebFlux,对此我感到非常高兴。此外,它还支持 Kotlin Coroutines,我不确定 Springfox 是否支持。
如果您决定迁移,springdoc
甚至还有一个 migration guide。
经过很长时间它对我有用,在我的应用程序中,我使用 spring 安全性,因此配置不匹配。这就是我得到空白页的原因。
我在安全配置和 JwtTokenAUthenticationFilter 中进行了以下更改 classes
内部配置(HttpSecurity http), .antMatchers("/login","/","/project/jira/update","/leave",
"/v2/api-docs",
"/swagger-ui.html").permitAll();
内部配置(WebSecurity web),web.ignoring().antMatchers("/swagger-resources/", "/webjars/" ) .antMatchers(HttpMethod.OPTIONS, "/**");
JwtTokenAUthentication 过滤器class
- 在 JwtTokenAuthenticationFilter 的 doFilterInternal 内部 -> uri.indexOf("swagger") >= 0 || “/{上下文路径}/v2/api-docs”.equals(uri)
或uri.contains("招摇")||uric.contains("/v2/api/docs")
这里uri的意思是HttpServletRequest.getRequestURI();