范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

笑小枫的SpringBoot系列二基于swagger的knife4j接口文档

  2 配置后端接口2.1 什么是knife4j
  Knife4j 的前身是swagger-bootstrap-ui ,前身swagger-bootstrap-ui 是一个纯swagger-ui 的ui 皮肤项目
  一开始项目初衷是为了写一个增强版本的swagger的前端ui,但是随着项目的发展,面对越来越多的个性化需求,不得不编写后端Java代码以满足新的需求,在 swagger-bootstrap-ui 的1.8.5~1.9.6版本之间,采用的是后端Java代码和Ui都混合在一个Jar包里面的方式提供给开发者使用.这种方式虽说对于集成swagger来说很方便,只需要引入jar包即可,但是在微服务架构下显得有些臃肿。
  因此,项目正式更名为 knife4j ,取名knife4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍,更名也是希望把她做成一个为Swagger接口文档服务的通用性解决方案,不仅仅只是专注于前端Ui前端.
  swagger-bootstrap-ui 的所有特性都会集中在knife4j-spring-ui 包中,并且后续也会满足开发者更多的个性化需求.
  主要的变化是,项目的相关类包路径更换为 com.github.xiaoymin.knife4j 前缀,开发者使用增强注解时需要替换包路径
  后端Java代码和ui包分离为多个模块的jar包,以面对在目前微服务架构下,更加方便的使用增强文档注解(使用SpringCloud微服务项目,只需要在网关层集成UI的jar包即可,因此分离前后端)
  knife4j 沿用 swagger-bootstrap-ui 的版本号,第1个版本从1.9.6开始,关于使用方法,请参考文档。2.2 怎么使用knife4j
  第一步:在maven项目的 pom.xml 中引入Knife4j的依赖包,代码如下:     com.github.xiaoymin     knife4j-spring-boot-starter     2.0.7 
  第二步:创建Swagger配置依赖,代码如下: package com.maple.demo.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.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;  /**  * @author 笑小枫  * @date 2022/6/28  */ @Configuration @EnableSwagger2WebMvc public class Knife4jConfiguration {      @Bean(value = "example")     public Docket example() {         return new Docket(DocumentationType.SWAGGER_2)                 .apiInfo(new ApiInfoBuilder()                         .title("笑小枫实例演示接口")                         .description("笑小枫实例演示接口")                         .termsOfServiceUrl("http://127.0.0.1:6666")                         .contact(new Contact("笑小枫", "https://www.xiaoxiaofeng.site", "zfzjava@163.com"))                         .version("1.0")                         .build())                 //分组名称                 .groupName("演示实例接口")                 .select()                 //这里指定Controller扫描包路径                 .apis(RequestHandlerSelectors.basePackage("com.maple.demo.controller"))                 .paths(PathSelectors.any())                 .build();     } }
  第三步:创建一个Controller package com.maple.demo.controller;  import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import lombok.Data; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;  /**  * @author zhangfuzeng  * @date 2022/6/30  */ @Api(tags = "实例演示-Knife4j接口文档") @RestController @RequestMapping("/example") public class TestKnife4jController {          @ApiOperation(value = "Knife4j接口文档演示")     @GetMapping("/testKnife4j")     public Test testKnife4j(Test param) {         Test test = new Test();         test.setName("笑小枫");         test.setAge(18);         test.setRemark("大家好,我是笑小枫,喜欢我的小伙伴点个赞呗,欢迎访问我的个人博客:http://www.xiaoxiaofeng.site");         return test;     }      @Data     static class Test {         @ApiModelProperty(value = "姓名")         private String name;          @ApiModelProperty(value = "年龄")         private Integer age;          @ApiModelProperty(value = "描述")         private String remark;     } } 2.3 看下页面效果
  项目启动后,在浏览器输入http://127.0.0.1:6666/doc.html访问
  image-20220711165333302
  接口调试:
  image-20220711165425505 2.4 增强模式
  Knife4j自2.0.6版本开始,将目前在Ui界面中一些个性化配置剥离,开发者可以在后端进行配置,并且提供的knife4j-spring-boot-strater组件自动装载
  spring.factories配置如下: # Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfiguration= com.github.xiaoymin.knife4j.spring.configuration.Knife4jAutoConfiguration
  在Spring Boot配置文件中,完整的配置如下: knife4j:   enable: true   documents:     -       group: 2.X版本       name: 接口签名       locations: classpath:sign/*   setting:     language: zh-CN     enableSwaggerModels: true     enableDocumentManage: true     swaggerModelName: 实体类列表     enableVersion: false     enableReloadCacheParameter: false     enableAfterScript: true     enableFilterMultipartApiMethodType: POST     enableFilterMultipartApis: false     enableRequestCache: true     enableHost: false     enableHostText: 192.168.0.193:8000     enableHomeCustom: true     homeCustomLocation: classpath:markdown/home.md     enableSearch: false     enableFooter: false     enableFooterCustom: true     footerCustomContent: Copyright  2022-[笑小枫](https://www.xiaoxiaofeng.site)     enableDynamicParameter: false     enableDebug: true     enableOpenApi: false     enableGroup: true   cors: false   production: false   basic:     enable: false     username: test     password: 123123
  在以前的版本中,开发者需要在配置文件中手动使用 @EnableKnife4j 来使用增强,自2.0.6版本后,只需要在配置文件中配置knife4j.enable=true 即可不在使用注解
  注意:要使用Knife4j提供的增强, knife4j.enable=true 必须开启
  各个配置属性说明如下:
  属性
  默认值
  说明值
  knife4j.enable
  false
  是否开启Knife4j增强模式
  knife4j.cors
  false
  是否开启一个默认的跨域配置,该功能配合自定义Host使用
  knife4j.production
  false
  是否开启生产环境保护策略,详情参考文档
  knife4j.basic
  对Knife4j提供的资源提供BasicHttp校验,保护文档
  knife4j.basic.enable
  false
  关闭BasicHttp功能
  knife4j.basic.username
  basic用户名
  knife4j.basic.password
  basic密码
  knife4j.documents
  自定义文档集合,该属性是数组
  knife4j.documents.group
  所属分组
  knife4j.documents.name
  类似于接口中的tag,对于自定义文档的分组
  knife4j.documents.locations
  markdown文件路径,可以是一个文件夹(classpath:markdowns/*),也可以是单个文件(classpath:md/sign.md)
  knife4j.setting
  前端Ui的个性化配置属性
  knife4j.setting.enableAfterScript
  true
  调试Tab是否显示AfterScript功能,默认开启
  knife4j.setting.language
  zh-CN
  Ui默认显示语言,目前主要有两种:中文(zh-CN)、英文(en-US)
  knife4j.setting.enableSwaggerModels
  true
  是否显示界面中SwaggerModel功能
  knife4j.setting.swaggerModelName
  Swagger Models
  重命名SwaggerModel名称,默认
  knife4j.setting.enableDocumentManage
  true
  是否显示界面中"文档管理"功能
  knife4j.setting.enableReloadCacheParameter
  false
  是否在每个Debug调试栏后显示刷新变量按钮,默认不显示
  knife4j.setting.enableVersion
  false
  是否开启界面中对某接口的版本控制,如果开启,后端变化后Ui界面会存在小蓝点
  knife4j.setting.enableRequestCache
  true
  是否开启请求参数缓存
  knife4j.setting.enableFilterMultipartApis
  false
  针对RequestMapping的接口请求类型,在不指定参数类型的情况下,如果不过滤,默认会显示7个类型的接口地址参数,如果开启此配置,默认展示一个Post类型的接口地址
  knife4j.setting.enableFilterMultipartApiMethodType
  POST
  具体接口的过滤类型
  knife4j.setting.enableHost
  false
  是否启用Host
  knife4j.setting.enableHomeCustom
  false
  是否开启自定义主页内容
  knife4j.setting.homeCustomLocation
  主页内容Markdown文件路径
  knife4j.setting.enableSearch
  false
  是否禁用Ui界面中的搜索框
  knife4j.setting.enableFooter
  true
  是否显示Footer
  knife4j.setting.enableFooterCustom
  false
  是否开启自定义Footer
  knife4j.setting.footerCustomContent
  false
  自定义Footer内容
  knife4j.setting.enableDynamicParameter
  false
  是否开启动态参数调试功能
  knife4j.setting.enableDebug
  true
  启用调试
  knife4j.setting.enableOpenApi
  true
  显示OpenAPI规范
  knife4j.setting.enableGroup
  true
  显示服务分组
  关于个性化文档( knife4j.documents )以及个性化设置(knife4j.setting ),有一些细微的区别,开发者在配置文件中进行配合好后,还需要在创建Docket对象时调用Knife4j 提供的扩展Extesions进行赋值
  示例代码如下: package com.maple.demo.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.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;  /**  * @author 笑小枫  * @date 2022/6/28  */ @Configuration @EnableSwagger2WebMvc public class Knife4jConfiguration {     /*引入Knife4j提供的扩展类*/     private final OpenApiExtensionResolver openApiExtensionResolver;      @Autowired     public SwaggerConfiguration(OpenApiExtensionResolver openApiExtensionResolver) {         this.openApiExtensionResolver = openApiExtensionResolver;     }      @Bean(value = "example")     public Docket example() {         String groupName="演示实例接口";         return new Docket(DocumentationType.SWAGGER_2)                 .apiInfo(new ApiInfoBuilder()                         .title("笑小枫实例演示接口")                         .description("笑小枫实例演示接口")                         .termsOfServiceUrl("http://127.0.0.1:6666")                         .contact(new Contact("笑小枫", "http://www.xiaoxiaofeng.site", "zfzjava@163.com"))                         .version("1.0")                         .build())                 //分组名称                 .groupName(groupName)                 .select()                 //这里指定Controller扫描包路径                 .apis(RequestHandlerSelectors.basePackage("com.maple.demo.controller"))                 .paths(PathSelectors.any())                 .build()              //赋予插件体系                 .extensions(openApiExtensionResolver.buildExtensions(groupName));     } }
  buildExtensions 方法需要传入分组名称,该分组名称主要是为了区分开发者在构建自定义文档时,在不同的Docket逻辑分组下进行区别显示。
  OpenApiExtensionResolver 辅助类需要配置knife4j.enable=true 才能自动@Autowired
  增强效果开启后,在最终调用接口时,Knife4j会添加扩展属性 x-openapi ,如下图:
  image-20220630132424363
  更多功能,请参考官方文档:https://doc.xiaominfo.com/knife4j/

全国首个花园式红博会亮相!2022中国红色旅游博览会主题展在韶山举办11月26日上午,2022中国红色旅游博览会主体活动红博园主题展在湘潭韶山精彩亮相。博览会现场湖南红色资源丰富,十步之内,必有芳草。这是习近平总书记2020年9月在湘视察时对湖南的美元拐点已现?人民币汇率将逐步回归内部因素主导作者丨明明(中信证券首席经济学家)编辑丨陆跃玲图源丨图虫近日,中国人民银行副行长国家外汇管理局局长潘功胜在2022金融街论坛年会上指出,由于我国宏观经济政策以我为主,利率和汇率走势T97李潇就没指望大嘴妹能带货11月财经新势力让那些喷子尽管黑我好了,他们越是黑,我们越是火!大概从9月开始,抖音上一个名为T97咖啡的直播间突然火了起来,不仅短短数月增粉过百万,由其引发的咖啡冲不冲挑战,也分央视直播!世界杯一晚4赛,东道主或祭盘外招,2大夺冠热门拼晋级2022世界杯北京时间11月25日消息,2022年卡塔尔世界杯火热进行中,各小组第一轮已经全部战罢,北京时间11月25日晚间到26日凌晨,小组赛第二轮展开争夺,一晚上要踢4场比赛。加密百万富翁?四分之一加密货币交易员年收入不到10,000美元我们还需要一段时间才能真正了解加密货币泡沫和随后的崩溃对那些真正负担不起的人的退休储蓄造成的打击有多严重。但我们已经对损失有所了解。而且比你想象的还要糟糕。对2013年至2020年网红老陈直播间诉苦,直言月收入2万多,比不上18线小网红经常上网的网友们都听说过网红老陈这个名字,他原本有一份铁饭碗工作,不仅体面而且受尊敬,最后不知道什么原因辞掉了那份工作,当起了网红。笔者在成都木玛教育咨询有限公司工作的朋友,之前曾供暖季来了!供热企业可享这些税收优惠近期,我国北方已进入供暖季。为支持居民供热采暖,国家对部分地区的供热企业在增值税房产税和城镇土地使用税方面给予税收优惠支持。具体如何规定,一起来学习一下供热企业取得的采暖费收入免征株洲渌口税务文明花开满庭芳红网时刻新闻通讯员林钰清株洲报道秋去冬来,走在渌口区的大街小巷,城市环境干净整洁有序,充满正能量的公益广告和横幅随处可见,身着相税行红马甲的税务志愿者活跃在城市的各个街道社区学校文坐月子是中国陋习,外国女性都不用坐月子?你可能被忽悠了产妇坐月子死亡?这样的事情其实不少见。产妇小张(化名),刚生完孩子不久。家人担心她坐月子落下月子病,坚持给小张穿长衣长裤,而且不开空调风扇,还要盖着被子。谁也没想到,这种捂月子的老两年12名女性获奖,还有90后!2021年和2022年科学探索奖线上颁奖科学探索,潮汐之上。第三届和第四届科学探索奖颁奖典礼11月26日在线上举行,100位青年科学家线上同屏,分享荣耀时刻,勇闯科学无人区,站上新的起跑线。100位青年科学家通过腾讯会议出发的勇气无惧年龄,任何时候,你都需要有向前奔赴的勇气凯伦一个40多岁无家可归放弃了房子和工作的女人,依然能够做到重塑自我。2022年,刚过了38周岁的生日,不出意外地接到通知受大号感冒的影响,现决定自10月6日起,公司全员休息,暂定
突然暴涨!大规模爆仓中国基金报记者李智在美国通胀降温等因素的影响下,加密货币市场迎来复苏迹象。作为全球市值最大的加密货币,近日比特币价格一度突破21000美元大关,飙涨至两个月来高位。比特币的上涨提振浙一年,属于你的治愈时刻是什么?又一次接近尾声这一年或许你收获过喜悦感动和成功也有过失落沮丧和彷徨但总有那样一些时刻如星辰般闪耀回首这一年我们见证了很多不平凡的大场面也目睹了一件件发生在身边的小事回望这一年往事幕2022,重温她们的高光时刻站在岁末的渡口我们挥别2022这一年无数优秀女性在各自的领域奋力绽放惊艳了时光让我们沿着时间的脉络共同回顾这一年属于她们的高光时刻收获满满的一年即将过去希望与梦想正向我们走来愿你我松江市民看过来!佘山度假区这些景点新春惠民福利大放送在新春到来之际为积极开展守沪者留沪稳岗送温暖活动佘山度假区不少景点推出了新春惠民福利活动下面一起来看看都有哪些精彩吧上海佘山国家森林公园上海佘山国家森林公园在在春节期间带来了门票半生娃福利迎新贺岁,助力快乐分娩当孕育着小生命的您,碰上了后疫情时代,面临的将是从未有过的紧张焦虑和困惑,在这个特殊时期团结与信心尤为重要。为了让更多的孕妈妈做好孕期健康管理,安全顺利迎接宝宝来临,荥阳妇幼孕妇学福利来啦丨超全面石墨烯检测方法大汇总1。显微镜法1)用扫描电子显微镜(SEM)扫描隧道显微镜(STM)透射电子显微镜(TEM)来表征生长域和表面形态。2)用原子力显微镜(AFM)来表征表面形态厚度层的均匀性畴生长。2太痛心了!8岁女童意外烧伤毁容手指截肢近日,一条视频引起了不少网友的关注因一场意外的火灾湖南长沙的一名8岁女童小金栎被烧伤导致毁容双手手指被截肢据小金栎妈妈描述事发前孩子和另一个小孩就在她隔壁玩两个小孩手中可能有打火机能通话能监测老人摔倒中国造斩获CES创新奖视频加载中日前,家庭机器人公司Enabot赋之科技(深圳)宣布,其最新发行的旗舰产品EBOX家庭守护机器人获得2023年CES机器人和智能家居两个品类的创新奖。EBOX搭载了升级版哪种主食最不健康?是米饭吗?医生劝告7种主食,尽量少吃米饭是我国最主要的主食之一,尤其是南方人,餐桌上从小到大都是白米饭,对于一些人来说,如果一餐没有吃白米饭,就感觉没吃饭一样。很多人看到网上有人说米饭是最不健康的主食,那么我们吃了一Python爬虫面向知乎的答案提取和图片下载需求描述爬取知乎的答案,爬取并下载一个问题下所有回答中的图片。实现平台开发工具PyCharm2017,语言版本Python3。6,Chrome谷歌浏览器。基本原理1。发送请求,获取与喜茶蜜雪一起出海,特色茶饮品牌如何另辟蹊径双增对话双增对话柠檬茶车间文张威编辑赵文元运营苏倩茹张思妍茶饮,这个本地色彩浓厚的业态,如何出海走向全球,中国新生代的企业家们正在做更多尝试。除了借鉴全球化餐饮连锁企业过往成功经验,还需要