Swagger 整合 Knife4j

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。

Swagger是接口文档 官网地址:https://swagger.io/

废话 不多说,开始

整合操作

Maven

    <!-- swagger2 可以通过  项目名称+/swagger-ui.html 访问具体页面-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.7.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.7.0</version>
        </dependency>
        <!--整合Knife4j swagger皮肤-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>2.0.4</version>
        </dependency>

添加个 配置类

import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @Author: 臧立昆
 * @Email: 740969606@qq.com
 * @Date: 2020/7/29
 * @Time: 15:33
 */
@Configuration //配置类
@EnableSwagger2 //启用Swagger2
@EnableKnife4j //开启swagger 新皮肤
public class Swagger2Config {
    @Bean
    public Docket apiConfig() {
        return new Docket(DocumentationType.SWAGGER_2)//创建Swagger2类型的文档
                .apiInfo(apiInfo())
                .groupName("臧立昆")
                .enable(true)
                .host("HOST");//apiInfo方法返回配置的接口信息
    }
    
    
    @Bean
    public Docket Group1() {
        return new Docket(DocumentationType.SWAGGER_2)//创建Swagger2类型的文档
                .apiInfo(apiInfo())
                .groupName("Group1")
                .enable(false)
                .host("HOST");//apiInfo方法返回配置的接口信息
    }


    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("GovbuyCrm")//接口标题
                .description("2020年10月15日项目启动,用于商务组的客户管理系统")//接口描述
                .version("1.0")//接口版本
                .contact(new Contact("ZLK", "http://www.zanglikun.com", "zanglikun@163.com"))//联系方式:名字、网址、邮箱
                .build();
    }

注解 实际操作

我们 实际只需要操作的地方 只有 4 个

  • controller类
  • controller方法
  • 实体类
  • 请求参数

controller类 上加:@Api(tags = “XXXController”)

controller方 上加: @ApiOperation(value = “子接口XXX”,notes = “备注信息”)

实体类 加: @ApiModel(value = “实体类配置了在Swagger Models文档中不一定能看不到吗,);

实体类 无法在Swagger Models文档 看到解决办法:

随便写一个 方法,返回这个对象就能在 Swagger Models文档 看到了
@GetMapping("/随便起")
domain showUserModel(){
    return new domain();
}

就可以看到了

请求参数 上加 :@ApiParam(value = “用户名”)

对于一些从 HttpServletRequest获取的参数,是不被Swagger识别的,

@ApiImplicitParams({
   	@ApiImplicitParam(name = "参数名", value = "注释信息", dataType = "提交方式"),  	@ApiImplicitParam(name = "参数名", value = "注释信息", dataType = "提交方式")
})

最终结果

最后,我们就需要我们项目请求路径 + doc.html 就是 Knife4j的地址

而单纯的 swagger 请访问 项目请求路径 + swagger-ui.html

还是那句话,你只看到了大佬轻松解决问题的光鲜,却不记得当初人家死磕Bug的痛苦。

万物皆入轮回,谁也躲不掉!

以上文章,均是我实际体验,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,支持下原创,请勿直接盗用,有条件的可以开通个会员支持下,谢谢!!!

Java Code Study » Swagger 整合 Knife4j

招聘、单纯问问题,都可以联系我

加我QQ 公司缺人,拉我入伙