简单的配置Sawgger+knife4j完成API测试功能

目的:减少postman的使用,以及生成对应的接口文档

1、添加依赖

基于自身spring boot 版本2.7.X

我选择的是:

        
            io.springfox
            springfox-boot-starter
            3.0.0
        

        
        
            com.github.xiaoymin
            knife4j-spring-boot-starter
            3.0.3
        
        
        
            com.github.xiaoymin
            swagger-bootstrap-ui
            1.8.5
        

如果Spring Boot 在2.6以前 fox和 knife4j要在2.9.x左右才可以

2、配置在application.properties中配置信息(application.yaml同理)

swagger路径配置是springboot 2.6版本以上才写的。

#swagger路径配置 否则报错空指针
spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER
#增强knife4j,也可以不增强 就不用写下面的内容
knife4j.enable=true

3、生成Swagger的配置信息

开启了多个注解(我直接复制修改部分配置名称即可)

/*开启swagger2*/
@EnableSwagger2
@Configuration
/*开启mvc访问*/
@EnableWebMvc
/*开启swagger增强工具*/
@EnableKnife4j
/*只有开发可以访问*/
@Profile({"dev"})
public class Swagger {

    /*创建API 应用
     * apiInfo() 增加API 相关信息
     * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露Swagger 来 展示
     * */
    private final OpenApiExtensionResolver openApiExtensionResolver;

    @Autowired
    public Swagger(OpenApiExtensionResolver openApiExtensionResolver) {
        this.openApiExtensionResolver = openApiExtensionResolver;
    }

    /*自己定义名字*/
    @Bean(value = "xxxAPI")
    public Docket xxxAPI() {
        Docket docket=new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .host("http://localhost:ip/port")
                .select()
                /*扫描路径 我的是controller层*/
                .apis(RequestHandlerSelectors.basePackage("xxx.xxx.xxx.controller"))
                .paths(PathSelectors.any())
                .build()
                .extensions(openApiExtensionResolver.buildSettingExtensions());
        return docket;


    }


    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().
                 title("API接口文档")
                .description("仅用于项目开发/测试/对接使用")
                .termsOfServiceUrl("")
                //编写你的联系方式 name url email
                .contact(new Contact("xxx", "http://www.baidu.com", "[email protected]"))
                .version("1.1")
                .build();
    }
}

4、配置MVC配置信息,如果有拦截器记得打开权限

@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {

    @Resource
    MyInterceptor myInterceptor;

    /**
     * 放行Swagger
     */
    private static final String[] SWAGGER_WHITELIST = {
            "/swagger-ui.html/**",
            "/swagger-ui/**",
            "/swagger-resources/**",
            "/v2/api-docs",
            "/v3/api-docs",
            "/v3/api-docs/swagger-config",
            "/webjars/**",
            /*knifej*/
            "/doc.html",
    };


    /*通过注册中心配置拦截器*/
    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        registry.addInterceptor(myInterceptor)
                .excludePathPatterns("/user/login")
                .excludePathPatterns(SWAGGER_WHITELIST)
                .addPathPatterns("/**")
        ;
    }

   
    //该方法是为了访问knife4j的页面,否则会提示404报错

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

如果没有拦截器也请一定要记得加上addResourceHandlers方法,目的是为了访问doc.html页面

5、自身根据业务配置相应注解

常用注解

简单的配置Sawgger+knife4j完成API测试功能_第1张图片

 我是基于Swagger2的,因此在控制层写了部分注解

简单的配置Sawgger+knife4j完成API测试功能_第2张图片

 启动程序后在http:ip/port/doc.html中即可看到内容

简单的配置Sawgger+knife4j完成API测试功能_第3张图片

点击对应的控制层能看到相关内容

简单的配置Sawgger+knife4j完成API测试功能_第4张图片

生成API文档并支持下载

简单的配置Sawgger+knife4j完成API测试功能_第5张图片

 暂时可以满足我的要求

你可能感兴趣的:(个人笔记,postman,java,spring,boot)