四、Java中SpringBoot组件集成接入【Knife4j接口文档(swagger增强)】

四、Java中SpringBoot组件集成接入【Knife4j接口文档(swagger增强)】

    • 1.Knife4j介绍
    • 2.maven依赖
    • 3.配置类
    • 4.常用注解使用
      • 1.实体类及属性(@ApiModel和@ApiModelProperty)
      • 2.控制类及方法(@Api、@ApiOperation、@ApiImplicitParam、 @ApiResponses)
      • 3.@ApiOperationSupport注解未生效的解决方法
    • 5.效果展示
    • 6.参考文章

1.Knife4j介绍

Knife4j是一款基于Swagger的开源API文档管理工具,具有易用性和丰富的功能。它可以方便地生成和展示RESTful API接口文档,并提供了强大的交互式界面。

Knife4j具有以下主要特点:

  1. 集成Swagger:Knife4j是在Swagger UI基础上进行扩展和优化的,能够完美兼容Swagger的注解和配置,生成符合OpenAPI规范的API文档。
  2. 强大的交互式界面:Knife4j的界面友好、美观,提供了接口测试、调试和在线调用等功能,使得开发者可以更方便地与API进行交互。
  3. 自动生成接口文档:通过Knife4j的各种注解,开发人员可以方便地在代码中定义接口信息和参数说明,然后Knife4j会根据这些注解自动生成API文档,减少了手动维护文档的工作量。
  4. 接口权限管理:Knife4j支持对API接口进行权限管理,可以通过配置权限策略,限制只有授权用户才能够访问和调用指定的接口。
  5. 支持自定义扩展:Knife4j支持自定义主题样式、接口分类、接口分组等功能,可以根据实际需求进行个性化定制。

总的来说,Knife4j简化了API文档的编写和管理工作,提供了交互性强、易于使用的界面,方便开发团队进行接口开发和测试工作。它是一款非常实用的API文档管理工具。
参考:Knife4j官方文档

2.maven依赖

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

3.配置类

在这里插入图片描述

import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
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
@EnableKnife4j
public class Knife4jConfig {@Beanpublic Docket createRestApi(Environment environment) {//设置显示的swagger环境信息,判断是否处在自己设定的环境当中,为了安全生产环境不开放SwaggerProfiles profiles = Profiles.of("dev", "test");boolean flag = environment.acceptsProfiles(profiles);//创建一个Docket的对象,相当于是swagger的一个实例return new Docket(DocumentationType.SWAGGER_2).useDefaultResponseMessages(false).groupName("1.x版本").apiInfo(new ApiInfoBuilder().description("API调试文档")//描述.contact(new Contact("funfan", "http://ip地址:10517/doc.html", "1424393744@qq.com"))//作者信息.version("v1.0")//版本.title("服务API文档")//标题.termsOfServiceUrl("")//服务Url.build())
//                .enable(flag)//只有当springboot配置文件为dev或test环境时,才开启swaggerAPI文档功能.select() // 这里指定Controller扫描包路径:设置要扫描的接口类,一般是Controller类.apis(RequestHandlerSelectors.basePackage("com.funfan.autoCodeDemo.manage.controller"))  //这里采用包扫描的方式来确定要显示的接口
//                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //这里采用包含注解的方式来确定要显示的接口.paths(PathSelectors.any())// 配置过滤哪些,设置对应的路径才获取.build();}}

4.常用注解使用

在这里插入图片描述

1.实体类及属性(@ApiModel和@ApiModelProperty)

@ApiModel:用于响应类上,表示一个返回响应数据的信息
@ApiModelProperty:用在属性上,描述响应类的属性

@ApiModel(value = "RestResponse<T>", description = "响应通用参数包装")
@Data
public class RestResponse<T> {@ApiModelProperty("响应错误编码,1为正常")private int code;@ApiModelProperty("响应错误信息")private String msg;@ApiModelProperty("响应内容")private T result;......()
}

2.控制类及方法(@Api、@ApiOperation、@ApiImplicitParam、 @ApiResponses)

  • @Api:用在请求的类上,说明该类的作用
  • @ApiOperation:用在请求的方法上,说明方法的作用
  • @ApiImplicitParam:用在 @ApiImplicitParams 注解中,指定一个请求参数的配置信息
    name:参数名
    value:参数的汉字说明、解释
    required:参数是否必须传
    paramType:参数放在哪个地方
    · header --> 请求参数的获取:@RequestHeader
    · query --> 请求参数的获取:@RequestParam
    · path(用于restful接口)–> 请求参数的获取:@PathVariable
    · body(不常用)
    · form(不常用)
    dataType:参数类型,默认String,其它值dataType=“Integer”
    defaultValue:参数的默认值
  • @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
    code:数字,例如400
    message:信息,例如"请求参数没填好"
    response:抛出异常的类
  • @ApiOperationSupport:用于配置和定制API接口的展示信息。
    ​​author​:指定API接口作者的名称。 ​​oAuthUrls​:指定需要进行OAuth授权的URL路径集合。
    ​​visibility​:指定API接口的可见性,默认为 ​PUBLIC​​。
    ​​responseHeaders​:指定API接口的响应头信息。
    ​​deprecated​:指定API接口是否已被废弃,默认为 ​false​。
    ​​hidden​:指定API接口是否隐藏,默认为​false​。
    ​​tags​:指定API接口所属的标签。
@Api(tags = "首页模块")
@RestController
public class IndexController {@ApiOperation(value = "向客人问好",notes = "向客人问好")@ApiImplicitParams({@ApiImplicitParam(name="userName", value="名字", required=true, paramType="form"),@ApiImplicitParam(name="password",value="密码",required=true,paramType="form"),})@ApiResponses({@ApiResponse(code=400,message="请求参数没填好"),@ApiResponse(code=404,message="请求路径没有或页面跳转路径不对")})@ApiOperationSupport(order = 1,author = "1424393744@qq.com", ignoreParameters = {"userId"})@ResponseBody@RequestMapping(value = "/sayHi.do", method = {RequestMethod.POST})public RestResponse<String> sayHi(@RequestBody @Validated User user){return RestResponse.success("Hi:"+user);}
}

3.@ApiOperationSupport注解未生效的解决方法

在application.yaml配置文件中启用knife4j增强

knife4j:# 开启增强配置enable: true# 开启生产环境屏蔽 production: true时就访问不了swagger了production: false

5.效果展示

开启服务,根据自身服务号访问:【ip:端口号/doc.html】
我的服务端口号10517,就访问http://127.0.0.1:10517/doc.html

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.参考文章

Java 后端整合 Swagger + Knife4j 接口文档
swagger2 注解说明
SpringBoot常用注解

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

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

相关文章

vue+springboot+mybatis-plus实现乡村公共文化服务系统

项目前端&#xff1a;https://gitee.com/anxin-personal-project/rural-public-cultural-services-front 项目后端&#xff1a;https://gitee.com/anxin-personal-project/rural-public-cultural-services-behind 1.系统简介 乡村公共服务文化提供给管理员、商家、村民。管理…

面相圆润是有福气的象征

在中国传统文化中&#xff0c;面相是一个非常重要的概念。相信大家肯定听说过“相由心生”这个成语吧&#xff0c;这就是告诉我们&#xff0c;一个人的面貌其实是可以反映出他内心的状态和气质&#xff0c;也可以反映其性格、健康状况和运势等。而一个圆润的面相&#xff0c;则…

SpringBoot 配置文件加载优先级

SpringBoot 配置文件加载优先级 前言SpringBoot 配置文件加载优先级 前言 最近在使用k8s部署项目的时候,发现Dockerfile文件中的命令后面跟的参数,无法覆盖nacos中的参数,今天有时间正好来整理一下Springboot配置的加载顺序 SpringBoot 配置文件加载优先级 整理加载顺序第一个肯…

合宙“全球通“模组Air795UG上市,支持4G+2G全球频段

简介 全球化浪潮之下&#xff0c;各物联网厂商纷纷激流勇进。有的已经在海外开拓一番天地&#xff0c;有的磨刀霍霍准备杀向海外&#xff0c;可谓“国内卷完&#xff0c;国外卷”。 合宙作为物联网设备的核心供应商&#xff0c;自然要为行业客户出海助力。针对海外区域网络设备…

MT6785安卓核心板_联发科MTK6785/Helio G95/曦力G95核心板定制

MT6785安卓核心板是基于MT6785(Helio G95)处理器&#xff0c;具备八核处理器结构&#xff0c;包括2颗主频为2.05GHz的Cortex A76处理器和6颗主频为2.0GHz的Cortex A55处理器&#xff0c;以及六颗Cortex-A55处理器。而在GPU方面&#xff0c;采用了Arm Mali-G76 MC4&#xff0c;频…

C语言基础语法跟练

题源&#xff1a;牛客网 1、输出"Hello Nowcoder!"。开始你的编程之旅吧。 #include <stdio.h>int main() {printf("Hello Nowcoder!");return 0; } 2、KiKi学会了printf在屏幕输出信息&#xff0c;他想输出一架小飞机。请帮他编写程序输出这架小…

蓝牙信标定位原理

定位原理&#xff1a;蓝牙信标的定位原理是基于RSSI蓝牙信号强度来做定位的。 根据应用场景不同&#xff0c;通过RSSI定位原理可分为两种定位方式 一、存在性定位 这种方式通常要求所需定位的区域安装一个蓝牙信标即可&#xff0c;手持终端扫描蓝牙信标信号&#xff0c;扫描…

postman使用-06断言

文章目录 一、断言定义二、 常用的断言三、断言-状态码&#xff08;1&#xff09;单一状态码断言&#xff1a;Status code:Code is 200 检查返回的状态码是否为200原始模板&#xff1a;修改后&#xff1a;括号里的200也可以改成自己要断言的状态码具体步骤&#xff1a;断言成功…

前端-基础 表格标签 - 基本使用及表头单元格 详解

基本使用 &#xff1a; 主要作用 &#xff1a; 即 主要 用于显示&#xff0c;展示数据&#xff0c;因为它可以让数据显示的非常的规整&#xff0c;可读性非常好。 特别是后台展示数据的时候&#xff0c;能够熟练运用表格就显得很重要。 一个清爽简约的表格能够把繁杂 的…

express框架

目录 一、express介绍二、express 使用2.1 express下载2.2 express初体验 三、express 路由3.1 路由的使用3.2 获取参数3.3 获取路由参数 四、express响应设置五、express中间件5.1 什么是中间件5.2 中间件的作用5.3 中间件的类型5.3.1 定义全局中间件5.3.2 多个全局中间件5.3.…

springBoot-自动配置原理

以下笔记内容&#xff0c; 整理自B站黑马springBoot视频&#xff0c;抖音Holis 1、自动配置原理 1.收集Spring开发者的编程习惯&#xff0c;整理开发过程使用的常用技术列表一>(技术集A) 2.收集常用技术(技术集A)的使用参数&#xff0c;整理开发过程中每个技术的常用设置列表…

Linux前后端项目部署

目录 1.jdk&tomcat安装 配置并且测试jdk安装 修改tomcat 配置文件 登入tomcat 发布 安装mysql 导入sql数据 发布项目war包 redis安装 nginx安装 配置nginx域名映射 部署前端项目 centos 7的服务安装 安装jdk 安装tomcat 安装Mysql 安装redis 安装nginx 前后…