您的位置:首页 > 教育 > 培训 > swagger,Knife4j和Yapi

swagger,Knife4j和Yapi

2024/10/6 8:30:10 来源:https://blog.csdn.net/luosuss/article/details/141571789  浏览:    关键词: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 {@Beanpublic 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 {@Beanpublic 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个人

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com