swagger,Knife4j和Yapi

news/2024/9/18 14:45:26/ 标签: yapi, bootstrap, servlet, 前端, android

目录

swagger

swagger的作用

swagger的使用

一.导入依赖

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

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

@Api

@ApiOperation

@ ApiImplicitParam

 @ApiModel

@ApiModelProperty

四:访问ui页面

Knife4j

 Knife4j的作用

knife4j的使用

一:导入依赖

 二:在swagger配置类中开启knife4j

三:访问knife4j

Yapi

Yapi的下载

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

yapi%E9%95%9C%E5%83%8F%E5%8C%85-toc" style="margin-left:80px;">二:拉取yapi镜像包

三:自定义config.json

yapi-toc" style="margin-left:80px;">四:启动yapi

yapi-toc" style="margin-left:80px;">五:访问yapi

yapi%E5%90%8C%E6%AD%A5%E6%9C%AC%E5%9C%B0%E4%B8%BB%E6%9C%BA%E7%9A%84swagger-toc" style="margin-left:40px;">使用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%E9%95%9C%E5%83%8F%E5%8C%85" style="background-color:transparent;">二:拉取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">四:启动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">五:访问yapi

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

 

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

yapi%E5%90%8C%E6%AD%A5%E6%9C%AC%E5%9C%B0%E4%B8%BB%E6%9C%BA%E7%9A%84swagger" style="background-color:transparent;">使用yapi同步本地主机的swagger

 

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

总结 

 swagger

特点:生成api文档

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

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

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


http://www.ppmy.cn/news/1516624.html

相关文章

在建设网站需要注意哪些安全防护事项

企业如果正准备建设网站千万要注意网站安全防护&#xff0c;网站安全不可以忽视&#xff0c;今天来讲讲关于网站建设安全注意事项。 1、网站源代码要安全 你是不是发现平时浏览网站操作过程中&#xff0c;发觉文章标题和内容压根不对付&#xff0c;显示的是其它与公司毫不相干…

24. 重置dataframe的索引

哈喽,大家好,我是木头左! 在数据分析和处理过程中,经常需要对dataframe进行各种操作,其中之一就是重置索引。重置索引可以帮助更好地管理和组织数据,提高数据处理的效率。本文将详细介绍如何使用pandas库中的reset_index()函数来重置dataframe的索引。 1. reset_index()函…

浅析裸土检测算法的实际应用及裸土检测算法源码样本

在环境保护和农业管理的持续推进中&#xff0c;裸土检测算法作为一种先进的技术工具&#xff0c;发挥着越来越重要的作用。它不仅提升了裸土监测的效率和准确性&#xff0c;还在实际应用中展示了巨大的潜力。本文将探讨裸土检测算法在实际应用中的表现&#xff0c;揭示其带来的…

Ant Design Vue中Modal.confirm无法自动关闭

温馨tips:着急看解决方法可跳过碎碎念~ 前两天经理扔给我一个问题&#xff1a;“这个弹窗怎么关不上了&#xff1f;” 我怀着无所谓的心态&#xff1a;小意思啦&#xff0c;5分钟之内解决完~ …当然flag是不能随便乱立的 拉下来项目&#xff08;原神启动&#xff08;不是&…

利用漏洞实现 Outlook 的 RCE:第 2 部分

## 攻击面 Outlook 要播放的声音文件是波形音频文件格式( WAV)。它通过接收声音文件路径的PlaySound函数播放。PlaySound将加载文件、解析它,然后调用soundOpen,后者将调用不同的波形函数,例如waveOutOpen。 WAV 文件充当多个音频编解码器的容器(或包装器)。编解码器是一…

线下参会报名丨智源数据与行业应用 Workshop 第二期

目前&#xff0c;大模型在数据基建和行业落地仍存在不少挑战。北京智源人工智能研究院深耕数据工具研发与数据平台建设&#xff0c;并持续推动模型与垂直场景的应用&#xff0c;旨在通过举办“数据与行业应用系列Workshop”活动&#xff0c;广泛链接生态伙伴&#xff0c;共同探…

【RabbitMQ高级特性】消息可靠性原理

1. 消息确认机制 1.1 介绍 我们可以看到RabbitMQ的消息流转图&#xff1a; 当消息从Broker投递给消费者的时候会存在以下两种情况&#xff1a; consumer消费消息成功consumer消费消息异常 如果说RabbitMQ在每次将消息投递给消费者的时候就将消息从Broker中删除&#xff0c…

RAFT:Adapting Language Model to Domain Specific RAG

论文链接 简单来说&#xff0c;就是你SFT微调的时候得考虑RAG的场景。 RAG什么场景&#xff1f;你检索top-k回来&#xff0c;里面有相关doc有不相关doc&#xff0c;后者是影响性能的重要原因&#xff0c;LLM需要有强大的识别能力才能分得清哪块和你的query相关。微调就是为了这…

Apache CloudStack Official Document 翻译节选(九)

关于 Apache CloudStack 的 最佳实践 &#xff08;三&#xff09; 配置云外的 防火墙与交换机 对Cisco VNMC&#xff08;Cisco Virtual Network Management Center&#xff09;设备集成云外的客户机网路防火墙&#xff1a; 思科虚拟网络管理中心为思科网络虚拟服务提供了中心…

【Rust光年纪】深度解读:Rust语言中各类消息队列客户端库详细对比

选择最佳 Rust 消息队列客户端库&#xff1a;全面对比与分析 前言 随着现代应用程序的复杂性不断增加&#xff0c;消息队列成为构建可靠、高性能系统的重要组件。本文将介绍一些用于Rust语言的消息队列客户端库&#xff0c;包括AMQP、Apache Kafka、NSQ、Apache Pulsar和Rock…

GoWeb 设置别名和多环境配置

别名 vite.config.ts中添加代码如下即可 //设置别名resolve: {alias: {"": path.resolve(process.cwd(),"src"),//用替代src}}随后即可使用 配置多环境 vite.config.ts中添加代码如下 envDir: ./viteenv,//相对路径随后在项目根目录创建对应的viteenv…

什么是 SQL 注入,有哪些类型,如何预防?

如果说数据是系统的核心&#xff0c;那么SQL注入就是直插系统核心的漏洞。一直以来SQL注入漏洞就被列入OWASP最常见和影响最广泛的十大漏洞列表中。 SQL注入漏是系统漏洞中一种比较严重的漏洞&#xff0c;如果说数据是系统的核心&#xff0c;那么SQL注入就是直插系统核心的漏洞…

Web应用服务器Tomcat

一、Tomcat的功能介绍 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和 并发访问用户不是很多的场合下被普遍使用&#xff0c;Tomcat 具有处理HTML页面的功能&#xff0c;它还是一个Servlet和 JSP容器。 官网…

PHP多门店民宿酒店预订系统小程序源码

&#x1f3e8;✨「多门店酒店民宿预订系统」——一键解锁全球住宿新体验&#xff01;&#x1f30d;&#x1f3e0; &#x1f31f; 开篇种草&#xff1a;旅行新伙伴&#xff0c;预订无忧&#xff01; 嘿小伙伴们&#xff0c;是不是每次计划旅行都被繁琐的酒店民宿预订搞得头大&…

uniapp封装请求

封装请求有两种&#xff1a; 一种是在服务端判断token是否失效&#xff0c;一种是在小程序端判断token是否过期&#xff0c;&#xff0c; 第二种在前端判断要简单些&#xff0c;&#xff0c;在拿到token的时候&#xff0c;并在前端设置一个token的过期时间的毫秒值&#xff0c…

分布式核心问题总结

一、幂等性 所谓幂等就是一次或多次操作同一个资源&#xff0c;所产生的影响均一致。产生问题的原因&#xff1a;网络阻塞和延迟、用户重复操作一锁 二判 三更新 三步严格控制顺序&#xff0c;确保加锁成功后进行数据查询和判断&#xff0c;幂等性判断通过后再更新&#xff0…

OpenCV绘图函数(3)判断点一条直线是否在一个矩形范围内的函数clipLine()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 裁剪线段与图像矩形相交的部分。 cv::clipLine 函数计算出完全位于指定矩形内的线段部分。如果线段完全位于矩形之外&#xff0c;则返回 false。…

HarmonyOS--认证服务-操作步骤

HarmonyOS–认证服务 文章目录 一、注册华为账号开通认证服务二、添加项目&#xff1a;*包名要与项目的包名保持一致三、获取需要的文件四、创建项目&#xff1a;*包名要与项目的包名保持一致五、添加json文件六、加入请求权限七、加入依赖八、修改构建配置文件&#xff1a;bui…

【C#】【EXCEL】Bumblebee/Classes/ExEnums.cs

文章目录 Bumblebee/Classes/ExEnums.csFlow diagramDescriptionCode Bumblebee/Classes/ExEnums.cs Flow diagram #mermaid-svg-FB98N7ZCCccQ4Z38 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-FB98N7ZCCccQ4Z38…

20.缓存的更新策略

定义 缓存中的旧数据与数据库不一致。 缓存更新策略的类型 1.内存淘汰&#xff0c;利用redis的内存淘汰机制&#xff0c;当内存不足时自动淘汰部分数据。下次查询时更新缓存。redis默认开启了此机制。这种保证数据的一致性差。 2.超时剔除&#xff0c;给缓存数据添加TTL时间…