解决spring boot中swagger-ui.html访问404以及配置全局header

在spring-boot中使用swagger:
1、添加maven插件:

      <dependency>
          <groupId>io.springfox</groupId>
          <artifactId>springfox-swagger2</artifactId>
          <version>${swagger.version}</version>
      </dependency>
      <dependency>
          <groupId>io.springfox</groupId>
          <artifactId>springfox-swagger-ui</artifactId>
          <version>${swagger.version}</version>
      </dependency>

2、代码配置:

@Configuration
@EnableSwagger2
public class Swagger2Config extends WebMvcConfigurerAdapter{
    /**
     * 这个地方要重新注入一下资源文件,不然不会注入资源的,也没有注入requestHandlerMappping,相当于xml配置的
     *  <!--swagger资源配置-->
     *  <mvc:resources location="classpath:/META-INF/resources/" mapping="swagger-ui.html"/>
     *  <mvc:resources location="classpath:/META-INF/resources/webjars/" mapping="/webjars/**"/>
     *  不知道为什么,这也是spring boot的一个缺点(菜鸟觉得的)
     * @param registry
     */
     @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/");
     }
    //可以注入多个doket,也就是多个版本的api,可以在看到有三个版本groupName不能是重复的,v1和v2是ant风格匹配,配置文件
    @Bean
    public Docket api() {
        //可以添加多个header或参数
        ParameterBuilder aParameterBuilder = new ParameterBuilder();
        aParameterBuilder
                .parameterType("header") //参数类型支持header, cookie, body, query etc
                .name("token") //参数名
                .defaultValue("token") //默认值
                .description("header中token字段测试")
                .modelRef(new ModelRef("string"))//指定参数值的类型
                .required(false).build(); //非必需,这里是全局配置,然而在登陆的时候是不用验证的
        List<Parameter> aParameters = new ArrayList<Parameter>();
        aParameters.add(aParameterBuilder.build());
        return new Docket(DocumentationType.SWAGGER_2).groupName("v1").select().apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.ant("/api/v1/**")).build().apiInfo(apiInfo1()).globalOperationParameters(aParameters);
    }


    private ApiInfo apiInfo1() {
        return new ApiInfoBuilder()
                .title("exampleApi 0.01")
                .termsOfServiceUrl("www.example.com")
                .contact(new Contact("liumei","http://blog.csdn.net/pc_gad","hilin2333@gmail.com"))
                .version("v0.01")
                .build();
    }
}

效果图:
这里写图片描述

  • 19
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
如果您已经确认添加了swagger2的依赖,但是访问swagger-ui.html时仍然出现404错误,可以尝试以下解决方法: 1. 检查是否在配置类上添加了`@EnableSwagger2`注解,这个注解是启用swagger2的关键,如果没有添加这个注解,swagger2将无法正常工作。 2. 检查是否已经正确配置swagger2的相关信息,包括文档标题、版本、描述等信息。如果这些信息没有正确配置,可能会导致swagger-ui.html无法正常显示。 3. 确认是否已经在配置类上添加了`@EnableWebMvc`注解,如果添加了这个注解,可能会导致静态资源无法正常访问。如果您添加了这个注解,请尝试将其删除,然后重新启动应用程序。 4. 检查是否正确配置了静态资源访问路径。如果没有正确配置静态资源访问路径,将无法访问swagger-ui.html文件。您可以在`application.properties`或`application.yml`文件添加以下配置: ```yaml spring.mvc.static-path-pattern=/static/** spring.resources.static-locations=classpath:/static/ ``` 这样配置后,可以将swagger-ui.html文件放在`/static/`目录下。 5. 如果您的项目使用了Spring Security等安全框架,可能需要在安全配置添加以下内容: ```java @Override public void configure(WebSecurity web) throws Exception { web.ignoring().antMatchers("/swagger-ui.html"); } ``` 这样配置后,可以忽略对swagger-ui.html的安全验证,从而正常访问swagger-ui.html文件。 希望这些解决方法对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值