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个人

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/410217.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac苹果电脑配置Docker最新国内源

如图&#xff1a; 具体配置如下: {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": ["https://docker.anyhub.us.kg", &…

ssrf漏洞之php-fpm未授权访问漏洞利用

目录 环境搭建 ​编辑漏洞点寻找 开始攻击 结果 环境搭建 在你的网站目录下创建一个新的php文件&#xff0c;内容如下 <?php highlight_file(__FILE__); $url $_GET[url]; $curl curl_init($url); curl_setopt($curl, CURLOPT_HEADER, 0); $responseText curl_exec…

ES6笔记总结:第四天(ES6完结)

Xmind鸟瞰图&#xff1a; 简单文字总结&#xff1a; node的模块化&#xff1a; 1.CommonJS 规范&#xff1a;Node.js 遵循 CommonJS 模块规范&#xff0c;该规范定义了如何在服务器环境中实现模块化&#xff0c;包括如何定义模块、如何引入和使用模块。 2.模块的定义&…

CISAW信息安全保障人员考试合格分数是多少?

在网络安全领域&#xff0c;众多认证证书中&#xff0c;CISAW信息安全保障人员认证备受瞩目。 随着信息安全专家的需求激增&#xff0c;国内面临着专业人才的短缺&#xff0c;越来越多人投身于CISAW认证考试。 那么&#xff0c;要通过CISAW认证需多少分数呢&#xff1f;答案是…

【知识图谱】2.知识抽取与知识存储

目录 一、知识抽取 1、实体命名识别&#xff08;Name Entity Recognition&#xff09; 2、关系抽取&#xff08;Relation Extraction&#xff09; 3、实体统一&#xff08;Entity Resolution&#xff09; 4、指代消解&#xff08;Coreference Resolution&#xff0…

【面试问题汇总】

面试问题汇总: Math.round函数:基础加0.5,向下取整 MySQL查询执行流程: 当我们执行一条SQL查询语句时,MySQL数据库会按照以下步骤进行处理: 语法解析器会对SQL语句进行解析,检查SQL语法是否正确。元数据查询器会检查查询的表和字段是否存在,以及当前用户是否具有相应…

RFID光触发标签在零售行业的深度应用

零售行业作为现代经济的重要组成部分&#xff0c;面临着诸多挑战和竞争压力&#xff0c;消费者需求的多样化、快速变化的市场趋势以及日益复杂的供应链管理&#xff0c;都对零售商提出了更高的要求&#xff0c;在这样的背景下&#xff0c;寻求创新的技术解决方案以提高运营效率…

Openstack 与 Ceph集群搭建(下): Openstack部署

文章目录 文章参考部署节点准备1. 修改Host文件与hostname名称2. 安装NTP软件3. 网卡配置信息4. 开启Docker共享挂载5. 安装python虚拟环境6. 安装kolla-ansible7. 加载Ansible galaxy requirements Openstack 安装前预配置1. 配置密码2. 配置multinode文件3. 修改全局配置文件…

在Windows上用Visual Studio编译Tesseract

Tesseract是著名的OCR&#xff08;文字识别&#xff09;开源项目。我想自己编译它的源代码。然而总体而言&#xff0c;大型开源项目在Windows上编译多少都会有些磕磕绊绊&#xff0c;如果有幸最后成功了&#xff0c;都值得写一篇文章来纪念一下。这便是本文的由来。 编译环境&…

客户端可以访问ntp时钟源,时间却一直不同步的问题

ntp时钟源通常是通过开放123 的udp端口对外提供ntp服务的&#xff0c;udp端口的访问可以通过nc -uvz xx.xx.xx.xx 123 端口进行验证&#xff0c;验证发现ntp时钟服务的123端口是开放的&#xff0c;也没有防火墙拦截123端口&#xff0c;但为什么客户端不同步ntp时钟源呢&#xf…

OpenCV杂项图像变换(1)自适应阈值处理函数adaptiveThreshold()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 函数对数组应用自适应阈值。 该函数根据以下公式将灰度图像转换为二值图像&#xff1a; 对于 THRESH_BINARY: t e x t d s t ( x , y ) { maxV…

OpenCV几何图像变换(10)透视变换函数warpPerspective()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 warpPerspective 函数使用指定的矩阵对源图像进行透视变换&#xff1a; dst ( x , y ) src ( M 11 x M 12 y M 13 M 31 x M 32 y M 33 , M…

C++笔记10•容器适配器:stackqueue priority_queue•

从C中看stack&queue&priority_queue 1.stack的介绍 官方stack实现&#xff1a; 本质是一个数组 1. stack 是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 2. stack 是作为容器适…

系统之家游戏专用版Win10系统:游戏玩家首选!

今天系统之家小编给大家带来最新的Win10游戏专用版&#xff0c;该版本系统是专为游戏玩家打造的操作系统&#xff0c;针对大型游戏做了专业优化&#xff0c;性能更优秀&#xff0c;玩家玩游戏体验感更好&#xff0c;还有出色的兼容性支持&#xff0c;能完美兼容各种类型的游戏&…

【与C++的邂逅】--- 模板初阶

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 与C的邂逅 本篇博客我们将了解C中泛型编程体现的一大利器 --- 模板&#xff0c;有了模板可以帮我们用户省力。 &#x1f3e0; 泛型编程 如何实现一个通…

Python数据采集与网络爬虫技术实训室解决方案

在大数据与人工智能时代&#xff0c;数据采集与分析已成为企业决策、市场洞察、产品创新等领域不可或缺的一环。而Python&#xff0c;作为一门高效、易学的编程语言&#xff0c;凭借其强大的库支持和广泛的应用场景&#xff0c;在数据采集与网络爬虫领域展现出了非凡的潜力。唯…

聚鼎科技:新人开一家装饰画店铺怎么快速起店

在当下这个看重审美和个性表达的时代&#xff0c;开设一家装饰画店铺无疑是迎合市场的明智选择。对于新人来说&#xff0c;快速且有效地启动一家装饰画店铺并非易事&#xff0c;但通过遵循一些关键步骤&#xff0c;可以大大缩短起步时间并提高成功率。 进行市场调研&#xff0c…

用序列模型(GPT Bert Transformer等)进行图像处理的调研记录

Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction 北大和字节团队的一篇VLM&#xff0c;在生成任务上&#xff0c;用GPT范式&#xff0c;声称在FID上超过了DIT&#xff0c;SD3和SORA。开源。首先是multi-scale的VQVAE&#xff0c;然后是…

足球联赛|基于SprinBoot+vue的足球联赛管理系统(源码+数据库+文档)

足球联赛管理系统 目录 基于SprinBootvue的足球联赛管理系统 一、前言 二、系统设计 三、系统功能设计 5.1 系统前台功能实现 5.2 后台功能模块实现 5.2.1 管理员模块实现 5.2.2 用户后台模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选…

Linux离线安装fontconfig

Linux离线下载yum包&#xff0c;安装字体库 一、下载安装包 以CentOS Linux release 7.9.2009下载fontconfig的rpm包的为例 http://mirror.centos.org/centos/7/按提示跳转历史库 找到对应版本的centos https://vault.centos.org/7.9.2009/os/x86_64/Packages/在Packages目…