当前位置: 首页 > news >正文

Swagger-01.介绍和使用方式

一.Swagger介绍

有了接口文档,我们就可以根据接口文档来开发后端的代码了。如果我们开发完了某个功能,后端如何验证我们开发的是否正确呢?我们就需要测试,使用Swagger就可以帮助后端生成接口文档,并且可以进行后端的接口测试。Swagger是后端非常常见的技术。

 直接使用Swagger有些繁琐,因此我们使用Knife4j,它是为Java MVC框架集成Swagger生成Api文档的方案。他对Swagger进行了封装,简化了相应的操作。

要使用Knife4j,就要在sky-server工程的pom文件中导入相应的坐标。<version>标签使用了版本锁定,在sky-server工程的父工程sky-take-out的pom文件中使用<dependencyManagement>标签集中进行了版本配置。

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId>
</dependency>

二.Swagger使用方式

在WebMvcConfiguration这个配置类中加入docket()方法。该方法上面加上一个@Bean注解,代表该方法由spring创建管理该对象,首先创建apiInfo对象构建我们生成的接口文档,title标题,version版本,description描述信息。该对象构造好后,就需要将这个Docket对象创建出来,创建时指定SWAGGER版本为SWAGGER_2,将信息传入,并指定生成接口需要扫描的包,会扫描该包及其子包。扫描到里面的类以及类中的方法,通过反射解析里面的方法,最终生成接口文档。

在配置类中设置静态资源映射,同样编写方法addResourceHandlers(),将/doc.html(固定的)和/webjars映射到该类路径下面。

WebMvaConfiguration.class

package com.sky.config;import com.sky.interceptor.JwtTokenAdminInterceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;/*** 配置类,注册web层相关组件*/
@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {@Autowiredprivate JwtTokenAdminInterceptor jwtTokenAdminInterceptor;/*** 注册自定义拦截器** @param registry*/protected void addInterceptors(InterceptorRegistry registry) {log.info("开始注册自定义拦截器...");registry.addInterceptor(jwtTokenAdminInterceptor).addPathPatterns("/admin/**").excludePathPatterns("/admin/employee/login");}/*** 通过knife4j生成接口文档* @return*/@Beanpublic Docket docket() {ApiInfo apiInfo = new ApiInfoBuilder().title("苍穹外卖项目接口文档").version("2.0").description("苍穹外卖项目接口文档").build();Docket docket = new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("com.sky.controller")).paths(PathSelectors.any()).build();return docket;}/*** 设置静态资源映射* @param registry*/protected void addResourceHandlers(ResourceHandlerRegistry registry) {    // 方法名固定,因为是重写了WebMvcConfigurationSupport这个父类中的方法。registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}
}

在浏览器中输入localhost:8080/doc.html 

解析controller类中的方法,有login和logout两个方法。

 接口测试:

响应回来的数据:

 如果不设置静态资源映射,会报404。包写错了也是扫描不到的。

http://www.lryc.cn/news/548078.html

相关文章:

  • 从CL1看生物计算机的创新突破与发展前景:技术、应用与挑战的多维度剖析
  • OpenCV视频解码性能优化十连击(实测帧率提升300%)
  • springboot3 RestClient、HTTP 客户端区别
  • 智能手表不可插卡怎么用
  • blender看不到导入的模型
  • 【Unity】 HTFramework框架(六十一)Project窗口文件夹锁定器
  • 智能体开发:推理-行动(ReAct)思维链提示
  • 机试准备第11天
  • 【Proteus仿真】【STM32单片机】智能阳台控制系统
  • Manus AI Agent 技术解读:架构、机制与竞品对比
  • 【时间序列】因果推断:从时序数据中探寻“因”与“果”
  • IDEA2023 使用枚举类型java: 非法字符: ‘\ufffd‘
  • 深度学习模型组件之优化器--基础优化器(GD、SGD、Mini-batch SGD)
  • 使用 AIStor、MLflow 和 KServe 将模型部署到 Kubernetes
  • 宝塔 Linux 计划任务中添加运行项目网站PHP任务-定时任务
  • unity学习64,第3个小游戏:一个2D跑酷游戏
  • rom定制系列------小米note3 原生安卓15 批量线刷 默认开启usb功能选项 插电自启等
  • 基于开源 AI 大模型、AI 智能名片及 S2B2C 商城小程序源码的个人 IP 用户运营策略研究
  • 什么是:马尔可夫博弈
  • 【探商宝】大数据企业销售线索平台:销售型公司的战略转型引擎
  • 用Ruby的Faraday库来进行网络请求抓取数据
  • Ubuntu的软件源
  • 笔记五:C语言编译链接
  • GitCode 助力 vue3-element-admin:开启中后台管理前端开发新征程
  • SyntaxError: Invalid regular expression flag “x“
  • HiveServer2与Spark ThriftServer详细介绍对比
  • ESP32S3N16R8驱动ST7701S屏幕(vscode+PlatfoemIO)
  • 软考初级程序员知识点汇总
  • 亲测解决笔记本触摸板使用不了Touchpad not working
  • 13.数据结构(软考)