swagger报Whitelabel Error Page status=405问题解决

访问swagger链接时报如下错误

 

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Thu Mar 17 20:14:30 CST 2022

There was an unexpected error (type=Method Not Allowed, status=405).

Request method 'GET' not supported

原因是@PostMapping 没有配置路径

   @PostMapping
    public UserInfoResponse queryUserNameById(@RequestBody UserInfoRequest request){
        log.info("查询用户姓名请求参数",request);
        UserInfoResponse response = userService.selectUserNameById(request);
        log.info("查询用户姓名返回参数",request);
        return response;
    }

<think>好的,我现在需要解决用户在Spring Boot中使用Swagger时遇到的Whitelabel错误页面问题。首先,我得回想一下常见的导致这个问题的原因。通常,Whitelabel错误页面出现是因为Spring Boot没有找到对应的资源或控制器来处理请求。所以,可能的原因包括Swagger的依赖没有正确配置,或者路径配置有问题。 接下来,我应该检查用户是否添加了正确的依赖。Swagger通常需要两个依赖:springfox-swagger2和springfox-swagger-ui。如果用户只添加了其中一个,可能会导致UI无法访问。另外,Spring Boot版本和Swagger版本的兼容性也是一个问题。比如,Spring Boot 2.6及以上版本默认使用PathPatternMatcher,可能导致路径匹配问题,需要调整配置。 然后,配置类是否正确。用户是否使用了@EnableSwagger2注解?是否正确配置了Docket bean?可能需要检查API的基本信息配置和路径选择是否正确。此外,WebMvc配置是否允许访问Swagger的资源路径,比如是否拦截了/swagger-ui.html或者/webjars/**等静态资源。 还有,检查应用程序的上下文路径是否设置。如果应用部署在某个上下文路径下,比如server.servlet.context-path=/api,那么访问Swagger的URL也需要包含这个路径。否则,直接访问/swagger-ui.html可能找不到页面。 另外,安全配置可能也是一个因素。如果项目集成了Spring Security,可能需要放行Swagger相关的路径,避免被拦截导致未授权访问。需要添加这些路径到忽略列表或允许所有用户访问。 最后,日志信息也很重要。查看启动时的日志,是否有Swagger相关的错误信息,比如bean初始化失败或者路径映射问题。有时候,依赖冲突也可能导致Swagger无法正常工作,需要检查是否存在版本冲突。 总结下来,解决步骤应该是:确认依赖是否正确且版本兼容;检查Swagger配置类;确保静态资源路径未被拦截;调整上下文路径和安全配置;查看日志定位具体错误。同时,用户可能需要根据Spring Boot的版本调整配置,比如使用spring.mvc.pathmatch.matching-strategy=ant_path_matcher来兼容旧版路径匹配策略。</think>### Swagger启动后显示Whitelabel Error Page解决方案 当Spring Boot集成Swagger时出现Whitelabel Error Page,通常是由于依赖配置、路径匹配或静态资源访问问题导致。以下是逐步排查和解决方法: --- #### 1. **检查Swagger依赖** 确保`pom.xml`或`build.gradle`中添加了Swagger的核心依赖和UI依赖: ```xml <!-- Springfox Swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <!-- Swagger UI --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> ``` > **注意**:Spring Boot 2.6+版本需特殊处理(见步骤3)[^1]。 --- #### 2. **配置Swagger的Docket Bean** 在配置类中添加`@EnableSwagger2`注解,并定义Docket Bean: ```java @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("com.example.controller")) .paths(PathSelectors.any()) .build() .apiInfo(apiInfo()); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("API文档") .description("接口说明") .version("1.0") .build(); } } ``` --- #### 3. **处理Spring Boot 2.6+的路径匹配问题** Spring Boot 2.6及以上版本默认使用`PathPatternMatcher`,可能导致Swagger资源路径匹配失败。在`application.properties`中添加: ```properties spring.mvc.pathmatch.matching-strategy=ant_path_matcher ``` --- #### 4. **允许静态资源访问** 确保Swagger的静态资源未被拦截。若使用自定义Web配置,需添加资源处理器: ```java @Configuration public class WebConfig implements WebMvcConfigurer { @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/"); } } ``` --- #### 5. **调整上下文路径** 若设置了`server.servlet.context-path`(如`/api`),访问Swagger的URL需包含上下文路径: ``` http://localhost:8080/api/swagger-ui.html ``` --- #### 6. **检查安全配置(如Spring Security)** 若项目集成Spring Security,需放行Swagger相关路径: ```java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/v2/api-docs").permitAll() .anyRequest().authenticated(); } } ``` --- #### 7. **验证日志输出** 启动时检查控制台日志,确认以下内容: - Swagger配置类是否加载 - 是否注册了`/v2/api-docs`和`/swagger-ui.html`等端点 - 无`No mapping for GET /swagger-ui.html`错误 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值