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

java集成Swagger2

本文主要介绍SpringBoot集成Swagger2,实现在线接口文档。

pom文件

        <!--        swagger2  --><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version></dependency>

Knife4jConfig

每一行代码都标注了注释,可以自行理解每行代码的的意思

import com.fasterxml.classmate.TypeResolver;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
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;
import springfox.documentation.swagger2.annotations.EnableSwagger2;/*** 作用: 自动生成API文档和在线接口调试工具* @Author majinzhong* @Date 2023/2/17 13:28* @Version 1.0*/@Configuration
//该注解是Springfox-swagger框架提供的使用Swagger注解,该注解必须加
@EnableSwagger2
//knife4j提供的增强扫描注解,Ui提供了例如动态参数、参数过滤、接口排序等增强功能
@EnableKnife4j
//@EnableWebMvc
public class Knife4jConfig {/***     创建一个Docket的对象,相当于是swagger的一个实例 : 配置开发和测试环境下开启Swagger,生产发布时关闭**     RequestHandlerSelectors,配置要扫描接口的方式*     basePackage:指定扫描的包路径*     any:扫描全部*     none:全部不扫描*     withClassAnnotation:扫描类上的注解,如RestController*     withMethodAnnotation:扫描方法上的注解,如GetMapping** @return*/@AutowiredTypeResolver typeResolver;@Beanpublic Docket createRestApi(Environment environment){//设置显示的swagger环境信息,判断是否处在自己设定的环境当中,为了安全生产环境不开放Swagger
//        Profiles profiles=Profiles.of("dev","test");
//        boolean flag=environment.acceptsProfiles(profiles);//创建一个Docket的对象,相当于是swagger的一个实例return new Docket(DocumentationType.SWAGGER_2).useDefaultResponseMessages(false).groupName("1.x版本").apiInfo(apiInfo()).host("127.0.0.1:8080")//只有当springboot配置文件为dev或test环境时,才开启swaggerAPI文档功能
//                .enable(true).select()// 这里指定Controller扫描包路径:设置要扫描的接口类,一般是Controller类
//                .apis(RequestHandlerSelectors.basePackage("xxx.xxx.controller"))  //这里采用包扫描的方式来确定要显示的接口.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //这里采用包含注解的方式来确定要显示的接口// 配置过滤哪些,设置对应的路径才获取.paths(PathSelectors.any()).build()//防止Controller中参数中没有实体类或者返回值不是实体类导致Swagger Models页面扫描不到的情况
//                .additionalModels(typeResolver.resolve(User.class));}///配置相关的api信息private ApiInfo apiInfo(){return new ApiInfoBuilder().description("API调试文档")//作者信息
//                .contact(new Contact("", "http://ip地址:8086/doc.html","")).version("v1.0").title("API文档")//服务Url.termsOfServiceUrl("").build();}
}

控制器

也就是再controller的类上添加如下注解

@Api(tags = "控制器名称")

再controller的方法上添加如下注解

@PostMapping("/接口名")
@ApiOperation(value = "接口中文名", notes = "接口详细说明)")
//@ApiImplicitParams({
//         @ApiImplicitParam(name = "必传字段", value = "字段注释", dataType = "String", paramType = "query", required = true),
//})
@ApiResponse(response = 返回值.class, code = 200, message = "接口返回对象参数")

实体类

实体类上添加

@ApiModel(value = "实体类名")

字段添加

@ApiModelProperty(value = "字段名")

效果

在线地址:http://127.0.0.1:8080/doc.html

无接口

有接口

实体类

离线文档

相关文章:

  • 人工智能与机器学习从理论、技术与实践的多维对比
  • java helloWord java程序运行机制 用idea创建一个java项目 标识符 关键字 数据类型 字节
  • 【洛谷P9303题解】AC代码- [CCC 2023 J5] CCC Word Hunt
  • 如何合理选择智能外呼机器人:多维评估
  • PDF处理控件Aspose.PDF教程:压缩 PDF 文档的完整指南
  • ubuntu20.04安装CUDA、Cudnn
  • 【】20250527PDF文件拆分成多个pdf(两页一份,用幼儿班级姓名命名文件)
  • 速通《Sklearn 与 TensorFlow 机器学习实用指南》
  • [Windows] 视频配音:Krillin AI v1.1.4
  • 如何使用PHP创建一个安全的用户注册表单,包含输入验证、数据过滤和结果反馈教程。
  • Android Cameara2 + MediaRecorder 完成录像功能
  • 如何构建一个高效的 iOS 应用日志体系?从开发调试到使用KeyMob上线排查的实践经验
  • iOS QQ抽屉式导航的实现
  • Matlab实现LSTM-SVM时间序列预测,作者:机器学习之心
  • 循环神经网络(RNN):原理、架构与实战
  • 织梦dedecms arclist最新发布日期显示红色
  • 如何在 Windows 和 Mac 上擦拭和清洁希捷外置硬盘
  • 重新安装解决mac vscode点击不能跳转问题
  • Apache POI生成的pptx在office中打不开 兼容问题 wps中可以打卡问题 POI显示兼容问题
  • 智能手表单元测试报告(Unit Test Report)
  • 做的最好的门户网站/网络优化有前途吗
  • 做宣传网站/seo排名优化关键词
  • 成都科技网站建设哪里有/微信小程序开发费用
  • 免费电影的网站怎么建设/优秀的软文广告欣赏
  • 绍兴市政府门户网站/网页模板网站
  • 官方网站建设思路/网络营销专业毕业论文