Springboot配置knife4j类(knife4j的使用)

news2024/11/30 5:02:19

1.引言

1.1 Swagger介绍

前后端分离开发模式中,API文档是最好的沟通方式。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。具有以下几个特点:

  1. 及时性 (接口变更后,能够及时准确地通知相关前后端开发人员)

  2. 规范性 (并且保证接口的规范性,如接口的地址,请求方式,参数及响应格式和错误信息)

  3. 一致性 (接口信息一致,不会出现因开发人员拿到的文档版本不一致,而出现分歧)

  4. 可测性 (直接在接口文档上进行测试,以方便理解业务)
    传统的swagger已经很少使用了,现在主要使用knife4j。

1.2 集成knife4j

knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。
knife4j的官网地址:Knife4j是一个集Swagger2 和 OpenAPI3为一体的增强解决方案


knife4j主要包括两大核心功能:文档说明 和 在线调试

  • 文档说明:根据Swagger的规范说明,详细列出接口文档的说明,包括接口地址、类型、请求示例、请求参数、响应示例、响应参数、响应码等信息,使用swagger-bootstrap-ui能根据该文档说明,对该接口的使用情况一目了然。
  • 在线调试:提供在线接口联调的强大功能,自动解析当前接口参数,同时包含表单验证,调用参数可返回接口响应内容、headers、Curl请求命令实例、响应时间、响应状态码等信息,帮助开发者在线调试,而不必通过其他测试工具测试接口是否正确,简介、强大。

2.代码实现

2.1 依赖

添加依赖

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

2.2代码

以下分为两组,用户和管理员。


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
import java.util.ArrayList;
import java.util.List;

/**
 * Swagger2配置信息
 */
@Configuration
@EnableSwagger2WebMvc
public class Swagger2Config {

    @Bean
    public Docket webApiConfig(){
        List<Parameter> pars = new ArrayList<>();
        ParameterBuilder tokenPar = new ParameterBuilder();
        tokenPar.name("userId")
                .description("用户token")
                //.defaultValue(JwtHelper.createToken(1L, "admin"))
                .defaultValue("1")
                .modelRef(new ModelRef("string"))
                .parameterType("header")
                .required(false)
                .build();
        pars.add(tokenPar.build());

        Docket webApi = new Docket(DocumentationType.SWAGGER_2)
                .groupName("webApi")
                .apiInfo(webApiInfo())
                .select()
                //只显示api路径下的页面
                .apis(RequestHandlerSelectors.basePackage("org.nkfg.ssyx"))
                .paths(PathSelectors.regex("/api/.*"))
                .build()
                .globalOperationParameters(pars);
        return webApi;
    }

    @Bean
    public Docket adminApiConfig(){
        List<Parameter> pars = new ArrayList<>();
        ParameterBuilder tokenPar = new ParameterBuilder();
        tokenPar.name("adminId")
                .description("用户token")
                .defaultValue("1")
                .modelRef(new ModelRef("string"))
                .parameterType("header")
                .required(false)
                .build();
        pars.add(tokenPar.build());

        Docket adminApi = new Docket(DocumentationType.SWAGGER_2)
                .groupName("adminApi")
                .apiInfo(adminApiInfo())
                .select()
                //只显示admin路径下的页面
                .apis(RequestHandlerSelectors.basePackage("org.nkfg.ssyx"))
                .paths(PathSelectors.regex("/admin/.*"))
                .build()
                .globalOperationParameters(pars);
        return adminApi;
    }

    private ApiInfo webApiInfo(){
        return new ApiInfoBuilder()
                .title("网站-API文档")
                .description("本文档描述了xxx网站微服务接口定义")
                .version("1.0")
                .contact(new Contact("", "", ""))
                .build();
    }

    private ApiInfo adminApiInfo(){
        return new ApiInfoBuilder()
                .title("后台管理系统-API文档")
                .description("本文档描述了xxx后台系统服务接口定义")
                .version("1.0")
                .contact(new Contact("", "", ""))
                .build();
    }
}

需要修改的如下:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

揭秘!AI加持双十一电商盛宴,带你解锁更多营销新玩法

从2009年到2023年&#xff0c;每年年终的双11大促都是如期而至&#xff0c;而且几乎每一次双11都能给电商行业带来创新和改变。今年是中国电商行业的第15个双11&#xff0c;也是人工智能&#xff08;AI&#xff09;在电商领域大规模应用的第一个双11。在这15年的发展历程中&…

RoboFab:世界第一家人形机器人生产工厂,承诺每年将生产1万台高科技机器人

原创 | 文 BFT机器人 脑洞大开地想象一下&#xff1a;有一家能够制造像人类一样行走、奔跑和工作的人型机器人的工厂。这听起来像是科幻电影&#xff0c;但实际上它已经出现在现实中。 不久之前&#xff0c;初创企业Agility Robotics向大众宣布将在美国俄勒冈州开设一座占地约…

Vue 官网使用与环境搭建

vue官网网址&#xff1a;https://cn.vuejs.org/vue脚手架文档网址&#xff1a;https://cli.vuejs.org/zh/ vue团队为了使得vue更加好的使用&#xff0c;维护了一些文档。 API是vue的字典&#xff0c;在编写vue的时候&#xff0c;遇到了一些不会的方法那么就去找API&#xff0c…

【linux进程控制(一)】进程终止--如何干掉一个进程?

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; 进程终止 1. 前言2. 文章整体…

uinapp微信小程序隐私政策授权

&#x1f680; 隐私弹窗效果图&#xff1a; 1、启用隐私相关功能在manifest.json文件中配置 usePrivacyCheck: true "mp-weixin" : {"__usePrivacyCheck__" : true, },2、创建组件 <template><view><!-- 隐私政策弹窗 --><uni-popu…

从瀑布模式到水母模式:ChatGPT引领软件研发的革新之路

ChatGPT引领软件研发的革新之路 概述操作建议本书优势 内容简介作者简介专家推荐读者对象目录直播预告写在末尾&#xff1a; 主页传送门&#xff1a;&#x1f4c0; 传送 概述 计算机技术的发展和互联网的普及&#xff0c;使信息处理和传输变得更加高效&#xff0c;极大地改变了…

CI523电动车NFC一键启动

Ci523是一颗工作在13.56MHz频率下的非接触式读写芯片&#xff0c;支持读A卡&#xff08;CI523支持读A/B卡&#xff09;&#xff0c;可做智能门锁、电动车NFC一键启动、玩具NFC开锁等应用。为部分要求低成本&#xff0c;PCB小体积的产品提供了可靠的选择。

WoShop跨境电商源码:支持多种货币转换,让购物更加便捷!

随着全球电子商务的飞速发展&#xff0c;跨境电商已经成为了众多企业的必然选择。然而&#xff0c;在跨国交易中&#xff0c;货币转换往往成为了一个令人头疼的问题。为了彻底解决这一难题&#xff0c;我们特别推出了一款支持多种货币转换的跨境电商源码&#xff0c;致力于为用…

大洋钻探系列之一引子

大洋科学钻探计划自1968年启动开始&#xff0c;迄今已有50余年&#xff0c;先后经历了&#xff14;个阶段。深海钻探计划(Deep Sea Drilling Program&#xff0c;DSDP&#xff0c;1968-1983年&#xff09;、国际大洋钻探计划&#xff08;Ocean Drilling Program&#xff0c;ODP…

内衣洗衣机和手洗哪个干净?最好用的迷你洗衣机推荐

内衣洗衣机是家里的一种重要电器&#xff0c;在日常生活中也能起到很大的作用。生活的压力太大了&#xff0c;不是所有人都有空闲的时间手洗自己的内衣、内裤。因此&#xff0c;内衣专用的洗衣机在这方面做得非常好。但是&#xff0c;目前市场上的内衣洗衣机品牌很多&#xff0…

JSPv2之El

​ (一)EL的基本语法 1优点 1 jsp的java太长了,el自己的语言${ 开始 }结束 2el直接返回空字符转,而java直接报错 3使用“lt”代替“<”运算符&#xff0c;如果运算符后面是数字&#xff0c;在运算符 *EL取值时&#xff0c;没有数组的下标越界&#xff0c;没有…

问答平台完整源码系统+知识科普+业界新闻 带完整的部署教程

目前&#xff0c;人们对于获取各种信息和知识的需求越来越大。传统的搜索引擎虽然可以提供大量的信息&#xff0c;但它们往往不能提供针对性的、准确的答案。因此&#xff0c;问答平台作为搜索引擎的一种补充&#xff0c;越来越受到用户的欢迎。开发问答平台的初衷是为了解决人…

亚马逊,美客多,temu新品推广期,如何快速增加review

在亚马逊的排名算法中&#xff0c;Review是一个非常重要的因素。好的Review可以直接提升产品的排名&#xff0c;带来更多的曝光量和流量&#xff0c;进而产生更多的订单。因此&#xff0c;卖家非常重视自己产品的Review数量和星级。产品的Review评分越高&#xff0c;排名越靠前…

4 Tensorflow图像识别模型——数据预处理

上一篇&#xff1a;3 tensorflow构建模型详解-CSDN博客 本篇开始介绍识别猫狗图片的模型&#xff0c;内容较多&#xff0c;会分为多个章节介绍。模型构建还是和之前一样的流程&#xff1a; 数据集准备数据预处理创建模型设置损失函数和优化器训练模型 本篇先介绍数据集准备&am…

Power BI 傻瓜入门 21. 让引人注目的报告变得可访问和用户友好的十种方法

Power BI中读取报告和可视化的能力不应仅限于那些能够区分颜色或能够独立阅读的人。色盲用户&#xff0c;甚至那些需要辅助技术来帮助他们解释数据的用户呢&#xff1f;不应该仅仅因为他们有一个独特的要求就把他们蒙在鼓里。使用Power BI&#xff0c;您可以无缝地整合许多功能…

电脑蓝屏怎么办?3个方法教你快速修复

电脑蓝屏&#xff0c;也被称为蓝屏死机&#xff0c;是计算机用户可能会遇到的一种常见问题。蓝屏通常伴随着错误代码和计算机重新启动&#xff0c;可能导致数据丢失。然而&#xff0c;幸运的是&#xff0c;电脑蓝屏问题通常可以得到解决。在本文中&#xff0c;我们将介绍电脑蓝…

通过51单片机控制28byj48步进电机按角度正反转旋转

一、前言 本项目基于STC89C52单片机&#xff0c;通过控制28BYJ-48步进电机实现按角度正反转旋转的功能。28BYJ-48步进电机是一种常用的电机&#xff0c;精准定位和高扭矩输出&#xff0c;适用于许多小型的自动化系统和机械装置。 在这个项目中&#xff0c;使用STC89C52单片机…

IP地址证书申请注意事项

IP地址证书申请跟常见的域名证书有所区别&#xff0c;首先确保80端口或者443端口处于开放状态&#xff0c;让CA机构在验签过程中能够正确访问到验证值&#xff0c;其实IP地址证书只能采用服务器文件验证&#xff0c;即把CA机构生成的服务器文件TXT文本上传到服务器根目录&#…

VueJs各个版本— 判断当前是开发、生产环境

VueJs各个版本— 判断当前是开发、生产环境 文章目录 VueJs各个版本— 判断当前是开发、生产环境vue项目分类VueCLI21&#xff0c;判断样例2&#xff0c;判断原理 Vue CLI 3 和 Vue CLI 41&#xff0c;判断样例2, 判断原理手动设置-json文件手动设置- .env 文件单个 .env 文件多…

python 数据挖掘库orange3 介绍

orange3 是一个非常适合初学者的data mining library. 它让使用者通过拖拽内置的组件来形成工作流。让你不需要写任何代码就可以体验到数据挖掘和可视化的魅力。 它的桌面如下&#xff0c;这里我创建了 3 个节点&#xff0c;分别是数据集、小提琴图&#xff0c;散点图 其中 …