SpringBoot - 集成Swagger、Knif4j接口文档以及文档添加账号密码登录

122 篇文章 2 订阅
订阅专栏

集成Swagger、Knif4j

依赖

pom.xml

        <!-- 引入Knife4j的官方start包,Swagger2基于Springfox2.10.5项目-->
        <!-- 访问 http://ip:port/doc.html -->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>3.0.3</version>
            <exclusions>
                <!--集成版本有漏洞,故剔除然后升级版本-->
                <exclusion>
                    <groupId>com.google.guava</groupId>
                    <artifactId>guava</artifactId>
                </exclusion>

                <exclusion>
                    <groupId>io.swagger</groupId>
                    <artifactId>swagger-models</artifactId>
                </exclusion>

            </exclusions>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>31.1-jre</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter -->
        <!-- 访问 http://ip:port/swagger-ui/  不在是原来的 http://ip:port/swagger-ui.html/,如果需要自行重定向即可 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>${springfox.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>io.swagger</groupId>
                    <artifactId>swagger-models</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-models</artifactId>
            <version>1.5.21</version>
            <scope>compile</scope>
        </dependency>

配置

特别注意事项:knif4j的配置 https://doc.xiaominfo.com/docs/quick-start
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YlQnK0Hx-1669623177480)(en-resource://database/62751:0)]


SpringConfig.java - 配置类

package work.linruchang.lrcutilsweb.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
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.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
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 work.linruchang.lrcutilsweb.config.handlerInterceptor.ApiDocHandlerInterceptor;
import work.linruchang.lrcutilsweb.util.convert.BeanConvertFactory;

import javax.annotation.PostConstruct;

/**
 * @author LinRuChang
 * @version 1.0
 * @date 2022/09/20
 * @since 1.8
 **/
@Configuration
public class SpringConfig  implements WebMvcConfigurer {

    @Value("${sys.swagger.author-name}")
    private String authorName;
    @Value("${sys.swagger.author-url}")
    private String authorUrl;
    @Value("${sys.swagger.author-email}")
    private String authorEmail;

    @Value("${sys.name}")
    private String sysName;


    @Autowired
    ApiDocHandlerInterceptor apiDocHandlerInterceptor;




    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(apiDocHandlerInterceptor)
                .addPathPatterns("/doc.html","/swagger-ui/","/swagger-ui.html");
    }

    /**
     *
     * @param registry
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addRedirectViewController("/swagger-ui.html", "/swagger-ui/");
        registry.addRedirectViewController("/swagger-ui.html/", "/swagger-ui/");
    }

    @Bean
    public Docket customDocketBean() {
        return new Docket(DocumentationType.SWAGGER_2)
                .enable(true)
                .apiInfo(new ApiInfoBuilder()
                        .description("个人在线工具类网站后台接口API")
                        .termsOfServiceUrl("https://doc.xiaominfo.com/")
                        .contact(new Contact(authorName,authorUrl,authorEmail))
                        .version("1.0")
                        .build())
                .groupName("lrc-utils-web-api")
                .select()
                .apis(RequestHandlerSelectors.basePackage("work.linruchang.lrcutilsweb.controller"))
                .paths(PathSelectors.any())
                .build();
    }



}


ApiDocHandlerInterceptor.java - Api文档账号密码校验拦截器 - 使用Basic认证

package work.linruchang.lrcutilsweb.config.handlerInterceptor;

import cn.hutool.core.codec.Base64;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import work.linruchang.lrcutilsweb.service.SysDictService;
import work.linruchang.lrcutilsweb.util.EnhanceSpringUtil;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * Api拦截器
 *
 * @author LinRuChang
 * @version 1.0
 * @date 2022/11/28
 * @since 1.8
 **/
@Component
@Slf4j
public class ApiDocHandlerInterceptor implements HandlerInterceptor {

    @Autowired
    SysDictService sysDictService;

    /**
     * 进入方法前
     * @param request current HTTP request
     * @param response current HTTP response
     * @param handler chosen handler to execute, for type and/or instance evaluation
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        boolean authStatusFlag = false;
        String authorization = EnhanceSpringUtil.getCurrentRequestHeader("Authorization");
        log.info("Api接口文档认证信息【Authorization】:{}", authorization);

        String authType = null;
        String authInfoCredentials = null;
        String userName = null;
        List<String> authorizationInfos = StrUtil.splitTrim(authorization, StrUtil.SPACE);
        if(CollUtil.size(authorizationInfos) == 2) {
            authType = authorizationInfos.get(0);
            authInfoCredentials = authorizationInfos.get(1);
            if (StrUtil.isNotBlank(authInfoCredentials)) {
                if (StrUtil.equalsAnyIgnoreCase(authType, "BASIC")) {
                    String authInfo = Base64.decodeStr(authInfoCredentials);
                    List<String> authInfos = StrUtil.splitTrim(authInfo, StrUtil.COLON);
                    userName = CollUtil.size(authInfos) >= 2 ? authInfos.get(0) : null;
                    String password =  CollUtil.size(authInfos) >= 2 ? authInfos.get(1) : null;

                    //这里自行获取数据库中的用户、密码信息进行校验是否正确
                    Dict dbUserInfo = getApiSwaggerUserInfo(userName);
                    if(dbUserInfo != null && StrUtil.equals(password,dbUserInfo.getStr("password"))) {
                        authStatusFlag = true;
                    }
                }
            }
        }

        //认证失败
        if (!authStatusFlag) {
            response.setHeader("WWW-Authenticate", StrUtil.format("{} realm=\"请填写正确的Api文档管理员账号、密码信息\"", StrUtil.blankToDefault(authType,"BASIC")));
            response.setStatus(401);
            return false;
        }

        //认证成功
        return true;
    }


    public Dict getApiSwaggerUserInfo(String loginName) {
        Dict swaggerConfig = sysDictService.getSwaggerConfig();
        if(StrUtil.equals(loginName,swaggerConfig.getStr("loginName"))) {
            return  swaggerConfig;
        }
        return null;
    }
}

演示


swagger文档访问
在这里插入图片描述


knif4j文档访问
在这里插入图片描述

//注意:
无退出登录,如果需要退出,自行删除浏览器缓存,或者直接使用谷歌插件【清除历史记录,缓存和Cookie Chrome】进行删除缓存即可

在这里插入图片描述

SpringBoot】22、SpringBoot中整合knife4j接口文档
Asurplus
07-02 21万+
在项目开发中,web项目的前后端分离开发,APP开发,需要由前后端工程师共同定义接口,编写接口文档,之后大家都根据这个接口文档进行开发,到项目结束前都要一直维护 接口文档使得项目开发过程中前后端工程师有一个统一的文件进行沟通交流开发,项目维护中或者项目人员更迭,方便后期人员查看、维护 一、界面先赏 1、首页 2、接口文档 3、调试 二、整合 knife4j 1、引入 maven 依赖 <!-- knife4j接口文档 start --> <dependency> &lt
swagger增强 knife4j-spring-boot-starter启动器,开启密码访问
qq_40319804的博客
08-19 2657
swagger文档开启用户名密码
spring boot 之 整合 knife4j 在线接口文档
我叫晨曦啊的博客
05-30 404
spring boot knife4j 在线接口文档
Knife4j的介绍与使用
最新发布
₍˄·͈༝·͈˄*₎◞ ̑̑的博客
08-10 983
通过集成Knife4j,开发人员可以轻松地在Spring Boot应用程序中生成详细的API文档。它提供了友好的界面和丰富的功能,如文档搜索、在线测试和数据模拟等。开发人员可以通过简单的配置和注解来定制API文档的生成规则。
SpringBoot - 集成Swagger2、Knife4j接口文档/升级版swagger-bootstrap-ui配置以及账号密码登录
Mr_Chp的博客
05-30 4294
Swagger UI添加登录权限
Spring Boot项目集成Knife4j接口文档
雨云21的博客
12-23 2175
Knife4j就相当于是swagger的升级版,对于我来说,它比swagger要好用得多 1、在pom.xml引入依赖包 <!-- Swagger配置依赖knife4j --> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version&gt
swagger添加用户登录鉴权
sorce201的博客
09-11 2099
swagger在1.9.6之后,整合成knife4j
swagger文档添加账号密码
mmdsl083的博客
06-26 1096
https://blog.csdn.net/qq_36090537/article/details/127789962
springboot3 集成knife4j
一个写了10年bug的程序员日常笔记。
04-22 1634
Knife4j是一个集Swagger2 和 OpenAPI3为一体的增强解决方案。Knife4j · 集Swagger2及OpenAPI3为一体的增强解决方案. | Knife4jjava:17。
springboot-swagger.zip--接口文档
03-18
SpringBoot-Swagger接口文档是Java开发中一个实用的工具,它使得API接口的文档化、测试和管理变得更加便捷。Swagger2是这个项目的核心组件,它是一个强大的RESTful API文档生成器,允许开发者通过注解在代码中描述...
springboot-knife4j 实现API文档
09-05
通过实际开发中的例子,展示如何在Spring Boot项目中创建一个简单的API并使用Knife4j生成文档,包括定义API路由、编写Controller、添加注解、配置 Knife4j,以及最后通过浏览器查看生成的文档。 5. **最佳实践** ...
SpringBoot集成smart-doc和torna接口文档的自动创建与文档推送
08-03
smart-doc和torna接口文档的自动创建与文档推送,解决了后端维护接口文档的困扰,没有swagger代码倾入性强,简单易上手,替代postman支持在线调试接口,超简单的集成Demo,下载即可用
springboot-集成swagger
没啥简介
01-03 1597
springboot-集成swagger1.依赖swagger2.配置SwaggerConfig3.Controller上配置swagger4.Model模型类上配置swagger5.swagger页面中文配置6.效果 本文所贴代码,实现了springboot集成swagger的常用配置和功能,可直接复制粘贴使用。 环境: springboot 2.1.4.RELEASE java 1.8 swagger常用注解: @Api:修饰整个类,描述Controller的作用 @ApiOperation:描述一
SpringBoot3中Swagger整合knife4jspringdoc的配置说明
m0_74055560的博客
11-11 7829
springboot3开始javax包改成了jakarta,而swagger-oas等包中依然使用的是javax所以报错。另外springfox已经过时了,两年没更新了,并且不支持OpenAPI3 标准,而SpringBoot3只支持OpenAPI3规范,所以要迁移到springdocKnife4J是一款基于Swagger快速生成API文档和调试平台的开源工具,它可以轻松地将Swagger规范转换成易于阅读的文档,并支持在线测试API。
Swagger配置完成以后,登录账户名和密码的设置
热门推荐
usersaa的博客
03-03 1万+
spring boot整个swagger 时启动项目时的 登录
Springboot3 + knife4j(springdoc) 框架整合以及Oauth2登录校验配置
叽叽叽叽叽叽叽叽叽叽叽叽叽叽叽叽
10-16 1686
原本使用的是springfox,自Springboot3开始,knife4j引入了springdoc。
gateway-nacos-knife4j整合加访问权限控制(详细教程适合新手入门)
12-28 7167
文章目录子模块配置gateway模块配置 最近学习到微服务这块,子模块一个一个的swagger切换调试非常麻烦,于是想聚合在网关,研究了一段时间,发现网上的教程对新手很不友好,所以自己学习了之后整理出来供springboot项目改造成springcloud项目的小伙伴参考,适合新手入门 子模块配置 需要: 1.新增一个config文件 2.改动yaml文件 3.pom文件新增依赖 4.controller跟pojo上增加swagger注解(略) package com.music.netsadcloudum
optparse模块
anshejd70787的博客
04-30 223
optparse模块主要是用来对参数的记录,相对来说比较灵活, 例子代码如下: #!/usr/bin/env python from optparse import OptionParser usage = 'usage:%prog [options] arg' #主要是总的使用信息,表示如何来使用此方法或者其他 parser = OptionParser(u...
Swagger3+knife4j的使用
我认不到你的博客
07-21 4554
Swagger3+knife4j的使用
写文章

热门文章

  • 认证学习4 - Bearer认证(Token认证)讲解、代码实现、演示 8927
  • Shell常用脚本:Frp内网穿透服务启动、关闭、重启、查看状态 7829
  • this.$refs类型识别问题 - 最详细解决方案 -【vue+typescript】 6813
  • 个人购买的域名(需要公网服务器)快速配置免费的HTTPS证书【有手就行】 6323
  • Tomcat全局自定义配置400、404、500页面 6088

分类专栏

  • vbs 2篇
  • Shell 20篇
  • 电脑、浏览器使用技巧、小知识 15篇
  • Java 122篇
  • 项目 2篇
  • 大数据 7篇
  • XPath 1篇
  • 问题解决 7篇
  • SpringBoot 19篇
  • 前端知识 25篇
  • MySQL 11篇
  • MongoDB 4篇
  • Git版本库 4篇
  • Vue 13篇
  • 认证 7篇
  • IDEA 6篇
  • Oracle 10篇
  • Linux 26篇
  • Docker 17篇
  • Redis 3篇
  • Tomcat 23篇
  • Liquibase 7篇
  • JPA 2篇
  • Hibernate 4篇
  • 书籍分享 3篇
  • MyBatis-Plus 3篇
  • Spring 13篇
  • ElasticSearch 3篇
  • Nginx 2篇
  • 部署 2篇
  • SpringMVC 7篇
  • SpringCloud 8篇
  • MyBatis 7篇
  • 算法、数据结构 19篇
  • 设计模式 3篇
  • JDBC 10篇

最新评论

  • 认证学习4 - Bearer认证(Token认证)讲解、代码实现、演示

    阿新吖!: 你好,还有源码吗

  • 机器人帮助文档

    征途黯然.: 我对这篇关于机器人帮助文档的文章印象深刻!通过这篇文章,我更深入地了解了。感谢!表情包

  • Ehcache(二次封装,每个元素可自定义过期时间)

    Miku : 这个示例是有问题的 1.下面的自定义 CustomExpiryPolicy 在访问情况下也返回原有过期时间,不断地续时间导致缓存无法更新 2.清理CustomExpiryPolicy 缓存的时间,不应该是异步,应该是同步synchronous,避免某些调用频率下,一定概率的缓存失效

  • Shell常用脚本:Frp内网穿透服务启动、关闭、重启、查看状态

    Javin_Ai: 这脚本写的可以

  • 认证学习3 - Digest摘要认证讲解、代码实现、演示

    入山问樵,入水问渔: apifox 认证失败,postman 认证成功

大家在看

  • 【快速上手】linux环境下Neo4j的安装与使用
  • 简单生活的快乐 337
  • 黑神话:悟空 后话 189

最新文章

  • VBS学习2:问题解决(文件中含义中文运行报错或者中文乱码)
  • VBS学习1 - 语法、内置函数、内置对象
  • Maven插件:git-commit-id-maven-plugin - 记录当前打包时的Git信息
2024年17篇
2023年11篇
2022年122篇
2021年7篇
2020年91篇
2019年91篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家深圳艺术商场美陈生产企业鞍山卡通人像玻璃钢雕塑荥阳玻璃钢智能雕塑南通玻璃钢景观雕塑设计超市圣诞节商场美陈曲阳玻璃钢雕塑雕塑厂家新密花朵玻璃钢雕塑生产玻璃钢雕塑厂家玻璃钢乌龟雕塑哈尔滨玻璃钢雕塑价格鹰潭玻璃钢人物雕塑制作厂家深圳特色商场美陈订购朔州玻璃钢小狗雕塑玻璃钢雕塑马设计费用花朵玻璃钢人物雕塑厂家周口标牌标识校园玻璃钢雕塑重庆商场美陈安装团队苏州玻璃钢户外雕塑商场冬季火焰美陈布置辽源雕塑玻璃钢卡通太湖石玻璃钢雕塑公司云南环保玻璃钢雕塑销售厂家固原玻璃钢景观雕塑栩栩如生萍乡景区玻璃钢雕塑供应商大兴安岭玻璃钢商场美陈玻璃钢白色雕塑玻璃钢仿铜小孩人物雕塑喀什学校玻璃钢雕塑价格安徽天桥玻璃钢花盆供应商吉林玻璃钢卡通动物雕塑批发香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化