SpringBoot整合knife4j

本文详细介绍了如何在SpringBoot项目中集成Knife4j创建API文档,包括添加依赖、配置Swagger、指定Controller扫描路径、加载静态资源和配置拦截器。还展示了如何在Controller中使用@Api注解来描述接口功能。
摘要由CSDN通过智能技术生成

在这里插入图片描述

第一步:创建springBoot项目并且在pom.xml中引入knife4j的依赖包,代码如下:

<!--引入Knife4j的官方start包,该指南选择Spring Boot版本<3.0,开发者需要注意-->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
    <version>4.0.0</version>
</dependency>

第二步:创建Swagger配置依赖,代码如下:

**
 * 访问地址:http://localhost:8080/doc.html
 */
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {

    @Bean(value = "dockerBean")
    public Docket dockerBean() {
        //指定使用Swagger2规范
        Docket docket=new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(new ApiInfoBuilder()
                        //描述字段支持Markdown语法
                        .description("# Knife4j 接口文档")//简介
                        .termsOfServiceUrl("大帅杯")//服务Url
                        .contact("只因你太美")//作者名
                        .version("1.0")//版本
                        .build())
                //分组名称
                .groupName("用户服务")
                .select()
                //这里指定Controller扫描包路径自己的包,不然会是空的
                .apis(RequestHandlerSelectors.basePackage("com.jiangweicong.seckill.controller"))
                .paths(PathSelectors.any())
                .build();
        return docket;
    }
}

第三步:加载静态文件,以及配置了拦截器,放行路径

@Configuration
public class MyWebMvcConfig extends WebMvcConfigurationSupport {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //加载public文件夹数据
        registry.addResourceHandler("/public/**")
                .addResourceLocations("classpath:/public/");
        /** 配置knife4j 显示文档 */
        registry.addResourceHandler("doc.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        /** 公共部分内容 */
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
    /**
	*一般拦截器是在Bean实例化之前就已经开启,
	*所以当拦截器调用redis工具类或者其他service层的时候会一直显示为null,
	*因为这个时候Bean还未实例化,所以无法调用
    *因此加入拦截器的时候要先用@Bean将拦截器先实例化,再将拦截器进行注册
	*/
    @Bean
    public Interceptor getInterceptor(){
        return new Interceptor();
    }
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(getInterceptor()).addPathPatterns("/**").
                excludePathPatterns("/","*/login","*.html","/images/**","/doc.html","/webjars/**","/swagger-resources","/swagger-resources/**","/v3/**");
    }
}

这里还有一个注意事项就是,用继承WebMvcConfigurationSupport方法的时候千万不能加@EnableWebMVC这个注解,因为我们是用继承的方法所以用该注解的时候他加载的是他本身的实现的内容,而我们自定义的静态文件就都不会加载。或者是直接WebConfig类直接实现WebMvcConfigurer的情况下才能加这个注解
第四步:新建一个接口Controller类,如下

@Api(tags = "登录模块")
@RestController
public class IndexController {
    
    @ApiOperation(value = "登录")
   	@ApiImplicitParams({
            @ApiImplicitParam(name = "name", value = "用户名", paramType = "query", dataType = "String" ),
            @ApiImplicitParam(name = "pwd", value = "密码", paramType = "query", dataType = "int" )
    })
    @PostMapping("/login")
    public String login(@RequestParam(value = "name")String name,
                        @RequestParam(value = "pwd")int pwd){
        String login=name+pwd;
        return login;
    }
}

第五步:访问http://localhost:8080/doc.html

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值