swagger,Knife4j和Yapi

目录

swagger

swagger的作用

swagger的使用

一.导入依赖

二.创建swagger配置类,交给SpringIoC容器管理

三.使用swagger依赖的注解来给接口层(controller)的各种方法进行注释

@Api

@ApiOperation

@ ApiImplicitParam

 @ApiModel

@ApiModelProperty

四:访问ui页面

Knife4j

 Knife4j的作用

knife4j的使用

一:导入依赖

 二:在swagger配置类中开启knife4j

三:访问knife4j

Yapi

Yapi的下载

一:在虚拟机中docker拉取mongoDB并启动

二:拉取yapi镜像包

三:自定义config.json

四:启动yapi

五:访问yapi

使用yapi同步本地主机的swagger

总结 


swagger

swagger的作用

  •  使得前后端分离开发更加方便,有利于团队协作;
  •  接口文档在线自动生成,降低后端开发人员编写接口文档的负担;
  • 接口功能测试;
  • 使用Swagger只需要按照它的规范去定义接口及接口相关的信息,再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,以及在线接口调试页面等等;

swagger的使用

一.导入依赖

<!--        swagger依赖-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
        </dependency>
<!--        swagger ui支持包-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
        </dependency>

二.创建swagger配置类,交给SpringIoC容器管理

package com.hhh.stock.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
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;


@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
    @Bean
    public Docket buildDocket() {
        //构建在线API概要对象
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(buildApiInfo())
                .select()
                // 要扫描的API(Controller)基础包
                .apis(RequestHandlerSelectors.basePackage("com.hhh.stock.controller"))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo buildApiInfo() {
        //网站联系方式
        Contact contact = new Contact("hhh程序员","https://www.hhh.com/","153@qq.com");
        return new ApiInfoBuilder()
                .title("这是一个项目接口API文档")//文档标题
                .description("这是一个方便前后端开发人员快速了解开发接口需求的在线接口API文档")//文档描述信息
                .contact(contact)//站点联系人相关信息
                .version("1.0.0")//文档版本
                .build();
    }
}

三.使用swagger依赖的注解来给接口层(controller)的各种方法进行注释

@Api

使用@Api接口的tags属性对该接口进行描述

@RestController
@RequestMapping("/api")
@Api(tags = "用户操作接口")
public class UserController {
}

@ApiOperation

 使用@ApiOPeration注解的value属性对方法进行描述

@ ApiImplicitParam
paramType查询参数类型
path以地址的形式(rest风格)提交数据
query直接跟参数完成自动映射赋值(/add/user?name=zhangsan)
body以流的形式提交 仅支持POST
header参数在request headers 里边提交
form以form表单的形式提交 仅支持POST
 
dataType:方法属性的类型
name:参数名字
value:对该参数的描述
required:true指该参数必须填写 
 @GetMapping("/user/{userName}")
    @ApiOperation(value = "根据用户名来查询用户的基本信息")
    @ApiImplicitParams(
            @ApiImplicitParam(paramType = "path",dataType = "string",name="userName",value = "用户名",required=true)
    )
    public SysUser getUserByUserName(@PathVariable("userName")String username){
        return userService.findByUserName(username);
    }

 @PostMapping("/login")
    @ApiOperation(value = "登录功能")
    public R<LoginRespVo> login(@RequestBody LoginReqVo loginReqVo){//接收前端发送的json数据并封装到LoginReqVo类对象
        return userService.login(loginReqVo);
    }

 @ApiModel

使用description对该类进行描述

@ApiModelProperty

使用value属性对类的成员变量属性进行描述 

@Data
@ApiModel(description = "返回用户的信息")
public class SysUser implements Serializable {
    /**
     * 用户id
     */
    @ApiModelProperty(value = "用户主键id")
    private Long id;

    /**
     * 账户
     */
    @ApiModelProperty(value = "用户名")
    private String username;

    /**
     * 用户密码密文
     */
    @ApiModelProperty(value = "用户的密文密码")
    private String password;
}

四:访问ui页面

http://localhost:8091/swagger-ui.html 

Knife4j

 Knife4j的作用

该UI增强包主要包括两大核心功能:文档说明 和 在线调试

  • 文档说明:根据Swagger的规范说明,详细列出接口文档的说明,包括接口地址、类型、请求示例、请求参数、响应示例、响应参数、响应码等信息,使用swagger-bootstrap-ui能根据该文档说明,对该接口的使用情况一目了然。
  • 在线调试:提供在线接口联调的强大功能,自动解析当前接口参数,同时包含表单验证,调用参数可返回接口响应内容、headers、Curl请求命令实例、响应时间、响应状态码等信息,帮助开发者在线调试,而不必通过其他测试工具测试接口是否正确,简介、强大。
  • 个性化配置:通过个性化ui配置项,可自定义UI的相关显示信息
  • 离线文档:根据标准规范,生成的在线markdown离线文档,开发者可以进行拷贝生成markdown接口文档,通过其他第三方markdown转换工具转换成html或pdf,这样也可以放弃swagger2markdown组件
  • 接口排序:自1.8.5后,ui支持了接口排序功能,例如一个注册功能主要包含了多个步骤,可以根据swagger-bootstrap-ui提供的接口排序规则实现接口的排序,step化接口操作,方便其他开发者进行接口对接

knife4j的使用

一:导入依赖

 <!--knife4j的依赖-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
        </dependency>
        <!--支持接口参数校验处理-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

 二:在swagger配置类中开启knife4j

@Configuration
@EnableSwagger2
@EnableKnife4j//knife4j对swagger进行增强
@Import(BeanValidatorPluginsConfiguration.class)//导入接口参数校验处理的配置类
public class SwaggerConfiguration {
    @Bean
    public Docket buildDocket() {
        //构建在线API概要对象
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(buildApiInfo())
                .select()
                // 要扫描的API(Controller)基础包
                .apis(RequestHandlerSelectors.basePackage("com.hhh.stock.controller"))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo buildApiInfo() {
        //网站联系方式
        Contact contact = new Contact("hhh程序员","https://www.hhh.com/","153@qq.com");
        return new ApiInfoBuilder()
                .title("这是一个项目接口API文档")//文档标题
                .description("这是一个方便前后端开发人员快速了解开发接口需求的在线接口API文档")//文档描述信息
                .contact(contact)//站点联系人相关信息
                .version("1.0.0")//文档版本
                .build();
    }
}

三:访问knife4j

http://lcoalhost:8091/doc.html

Yapi

Yapi的下载

一:在虚拟机中docker拉取mongoDB并启动

# 拉取mongo镜像
docker pull mongo
# 安装mongo数据库服务
# 创建存储卷
docker volume create mongo-data
# 启动 MongoDB
docker run -d \
  --name mongo-yapi \
  -v mongo-data:/data/db \
  -p 27017:27017 \
  -e MONGO_INITDB_ROOT_USERNAME=anoyi \
  -e MONGO_INITDB_ROOT_PASSWORD=anoyi.com \
  mongo

二:拉取yapi镜像包

docker pull registry.cn-hangzhou.aliyuncs.com/anoyi/yapi

三:自定义config.json

mkdir /usr/local/yapi

touch config.json

config.json内容

{
  "port": "3000",
  "adminAccount": "admin@anoyi.com",
  "timeout":120000,
  "db": {
    "servername": "mongo",
    "DATABASE": "yapi",
    "port": 27017,
    "user": "anoyi",
    "pass": "anoyi.com",
    "authSource": "admin"
  }
}

四:启动yapi

# 初始化管理员账户和密码
docker run -it --rm \
  --link mongo-yapi:mongo \
  --entrypoint npm \
  --workdir /yapi/vendors \
  -v $PWD/config.json:/yapi/config.json \
  registry.cn-hangzhou.aliyuncs.com/anoyi/yapi \
  run install-server

 

docker run -d \
  --name yapi \
  --link mongo-yapi:mongo \
  --workdir /yapi/vendors \
  -p 3000:3000 \
  -v $PWD/config.json:/yapi/config.json \
  registry.cn-hangzhou.aliyuncs.com/anoyi/yapi \
  server/app.js

五:访问yapi

访问: http://192.168.230.100:3000
登录账号:admin@anoyi.com
密码:ymfe.org

 

注意:访问Yapi时必须启动mongoDB

使用yapi同步本地主机的swagger

 

 注意项目swagger.json地址不能写localhost,因为yapi是安装在虚拟机上的,所以要写本地主机的ip地址,使用ipconfig查看,要注意这个地址要让虚拟机可以ping通

总结 

 swagger

特点:生成api文档

缺点:适用于个人,ui界面不好看

knife4j是swagger的增强版(ui好看)

Yapi是公共的接口文档,web个人

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落落落sss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值