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

【knife4j】接口分组配置;登录拦截器放行;登录拦截器配置token;给全局异常处理类添加注解;解决上传文件不显示文件域;参数扁平化;@Parameter

ParameterParameter是用来为 API 接口参数添加元数据描述信息的注解这些信息最终会生成到 OpenAPI 规范的文档中供 Knife4j/Swagger UI 等工具展示简单来说它让 API 的使用者能清楚地知道每个参数的含义、是否必填、格式要求等Operation(summary 查询指定课程的学习记录) GetMapping(/course/{courseId}) public LearningLessonDTO queryLearningRecordByCourse( PathVariable Parameter(description 课程id, example 2) Long courseId){ return recordService.queryLearningRecordByCourse(courseId); }参数扁平化springdoc: default-flat-param-object: true效果没有添加配置效果接口分组配置088-尚庭公寓-项目开发-后台管理-初始配置-Knife4j_哔哩哔哩_bilibili后台管理系统和移动端接口不同webConfiguration public class Knife4jConfiguration { // 配置了接口文档的基本信息 Bean public OpenAPI customOpenAPI() { return new OpenAPI() .info(new Info() .title(后台管理系统API) .version(1.0) .description(后台管理系统API); } // 下面的Bean对应一个个的接口分组 // Bean public GroupedOpenApi systemAPI() { return GroupedOpenApi.builder().group(系统信息管理). pathsToMatch( /admin/system/** ). build(); } Bean public GroupedOpenApi loginAPI() { return GroupedOpenApi.builder().group(登录管理). pathsToMatch( /admin/login/**, /admin/info). build(); } Bean public GroupedOpenApi apartmentAPI() { return GroupedOpenApi.builder().group(公寓信息管理). pathsToMatch( /admin/apartment/**, /admin/room/**, /admin/label/**, /admin/facility/**, /admin/fee/**, /admin/attr/**, /admin/payment/**, /admin/region/**, /admin/term/**, /admin/file/** ).build(); } Bean public GroupedOpenApi leaseAPI() { return GroupedOpenApi.builder().group(租赁信息管理). pathsToMatch( /admin/appointment/**, /admin/agreement/** ).build(); } Bean public GroupedOpenApi userAPI() { return GroupedOpenApi.builder().group(平台用户管理). pathsToMatch( /admin/user/** ).build(); } }appConfiguration public class Knife4jConfiguration { Bean public OpenAPI customOpenAPI() { return new OpenAPI() .info(new Info() .title(APP接口) .version(1.0) .description(用户端APP接口); } Bean public GroupedOpenApi userAPI() { return GroupedOpenApi.builder().group(用户信息). pathsToMatch(/app/user/**). build(); } Bean public GroupedOpenApi loginAPI() { return GroupedOpenApi.builder().group(登录信息). pathsToMatch(/app/login/**, /app/info). build(); } Bean public GroupedOpenApi personAPI() { return GroupedOpenApi.builder().group(个人信息). pathsToMatch( /app/history/**, /app/appointment/**, /app/agreement/** ). build(); } Bean public GroupedOpenApi lookForRoomAPI() { return GroupedOpenApi.builder().group(找房信息). pathsToMatch( /app/apartment/**, /app/room/**, /app/payment/**, /app/region/**, /app/term/** ). build(); } }登录拦截器放行3.5 访问权限控制 | Knife4j这些是knife4j需要的路径给登录拦截器放行Configuration RequiredArgsConstructor public class WebConfig implements WebMvcConfigurer { private final LoginInterceptor loginInterceptor; Override public void addInterceptors(InterceptorRegistry registry) { // 将拦截器注册到Spring MVC的拦截器链中 registry.addInterceptor(loginInterceptor) .addPathPatterns(/**) .excludePathPatterns( /v3/api-docs/**, /doc.html, /swagger-ui/**, /swagger-resources/** ); } }让接口文档带上token146-尚庭公寓-项目开发-后台管理-系统管理-登录管理-拦截器_哔哩哔哩_bilibili让接口文档在发送测试请求时带上token之后就能通过拦截器的验证这个全局参数只对当前分组生效有多个分组要设置多次参数名称和前端约定好参数值获取真实的token如果是自己生成token为了方便可以调整有效期生成完后再恢复成一小时的有效期需要给全局异常处理类添加注解关于异常java.lang.NoSuchMethodError: ‘void org.springframework.web.method.ControllerAdviceBean.init(ja_java.lang.nosuchmethoderror: void org.springframe-CSDN博客使用Hidden不然接口文档报错// common模块/exception /** * 全局异常处理器 * Knife4jSwagger全局异常添加Hidden防止报错 */ Hidden ControllerAdvice public class GlobalExceptionHandler { ExceptionHandler(Exception.class) ResponseBody public Result handle(Exception e){ e.printStackTrace(); return Result.fail(); } }解决上传文件不显示文件域【Knife4j】解决SpringBoot整合Knife4j 3.0.3 文件上传不显示文件域_knife4j调试文件传参,选不了文件-CSDN博客使用RequestPart我之前使用了RequestParam没用Tag(name 文件管理) RequestMapping(/file) RestController RequiredArgsConstructor public class FileUploadController { private final FileService fileService; Operation(summary 上传文件) PostMapping(upload) public ResultString upload(RequestPart(file) MultipartFile file) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException { String url fileService.uploadFile(file); return Result.ok(url); } }

相关文章:

【knife4j】接口分组配置;登录拦截器放行;登录拦截器配置token;给全局异常处理类添加注解;解决上传文件不显示文件域;参数扁平化;@Parameter

Parameter Parameter 是用来为 API 接口参数添加元数据(描述信息)的注解,这些信息最终会生成到 OpenAPI 规范的文档中,供 Knife4j/Swagger UI 等工具展示 简单来说:它让 API 的使用者能清楚地知道每个参数的含义、是…...

closure-compiler-js迁移指南:如何从弃用版本平稳过渡到官方版本

closure-compiler-js迁移指南:如何从弃用版本平稳过渡到官方版本 【免费下载链接】closure-compiler-js Package for the JS version of closure-compiler for use via NPM 项目地址: https://gitcode.com/gh_mirrors/cl/closure-compiler-js 如果你正在使用…...

如何在macOS上运行Windows应用:Whisky完整使用指南

如何在macOS上运行Windows应用:Whisky完整使用指南 【免费下载链接】Whisky A modern Wine wrapper for macOS built with SwiftUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisky 想要在Mac上运行Windows专属软件和游戏?厌倦了虚拟机的高资…...

Windows 10/11打印服务总罢工?别急着重装,试试这几招修复Print Spooler自动停止

Windows 10/11打印服务罢工?5种专业修复方案拯救Print Spooler 办公室里最令人抓狂的时刻之一,就是当你急需打印文件时,发现打印机毫无反应。你检查服务管理器,发现那个关键的Print Spooler服务又自动停止了。这种情况在Windows …...

Cytoscape美化进阶:用cytoNCA等5款核心插件深度分析你的生物网络

Cytoscape美化进阶:用cytoNCA等5款核心插件深度分析你的生物网络 生物网络分析早已超越了简单的可视化阶段。当你在Cytoscape中绘制出第一个蛋白质相互作用网络时,那种成就感很快会被一个更迫切的问题取代:这些连接背后隐藏着怎样的生物学故事…...

Flutter Shimmer高级用法:创建复杂的多方向闪烁效果

Flutter Shimmer高级用法:创建复杂的多方向闪烁效果 【免费下载链接】flutter_shimmer A package provides an easy way to add shimmer effect in Flutter project 项目地址: https://gitcode.com/gh_mirrors/fl/flutter_shimmer Flutter Shimmer是一款强大…...

ElevenLabs法语情感语音合成黑盒拆解:如何通过prosody token注入实现“巴黎左岸咖啡馆式”自然停顿与语调起伏?

更多请点击: https://intelliparadigm.com 第一章:ElevenLabs法语情感语音合成黑盒拆解:核心动机与技术定位 ElevenLabs 的法语语音合成能力并非简单地将英文模型适配至法语,而是依托多语言联合训练、音素级韵律建模与情感嵌入向…...

Cursor智能体学习工具:构建专属AI编程知识库的完整指南

1. 项目概述:一个为开发者量身定制的Cursor智能体学习工具如果你是一名开发者,并且最近正在尝试使用Cursor这款AI编程工具,那么你很可能和我一样,经历过一个既兴奋又有点迷茫的阶段。Cursor的强大毋庸置疑,它能理解上下…...

Imagine Engine时间线管理:掌握游戏节奏的完整教程 [特殊字符]

Imagine Engine时间线管理:掌握游戏节奏的完整教程 🎮 【免费下载链接】ImagineEngine A project to create a blazingly fast Swift game engine that is a joy to use 🚀 项目地址: https://gitcode.com/gh_mirrors/im/ImagineEngine …...

Linux微信小程序开发终极指南:从零搭建完整开发环境

Linux微信小程序开发终极指南:从零搭建完整开发环境 【免费下载链接】wechat-web-devtools-linux 适用于微信小程序的微信开发者工具 Linux移植版 项目地址: https://gitcode.com/gh_mirrors/we/wechat-web-devtools-linux 还在为Linux系统无法进行微信小程序…...

如何用G-Helper轻松实现华硕笔记本CPU降压:实用调优指南

如何用G-Helper轻松实现华硕笔记本CPU降压:实用调优指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, …...

LibreCAD符号库创建终极指南:快速构建您的专业CAD图库

LibreCAD符号库创建终极指南:快速构建您的专业CAD图库 【免费下载链接】LibreCAD LibreCAD is a cross-platform 2D CAD program. It can read DXF and write DXF/PDF/SVG files, with basic support for DWG reading. It supports point/line/circle/ellipse/parab…...

如何在Windows电脑上安装安卓应用:APK Installer完整使用指南

如何在Windows电脑上安装安卓应用:APK Installer完整使用指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上直接运行安卓应用吗&#x…...

深入解析 magic-cli:基于模板的自动化代码生成工具设计与实践

1. 项目概述:一个能“变魔术”的命令行工具最近在折腾一些自动化脚本和项目脚手架时,发现了一个挺有意思的开源项目,叫magic-cli。乍一看这个名字,你可能会觉得有点玄乎,命令行工具还能玩出什么“魔法”来?…...

基于Tauri与语义网络的本地优先知识管理工具Engram技术解析

1. 项目概述:从“记忆宫殿”到数字思维引擎最近在折腾一个叫Engram的开源项目,它来自 GitHub 上的 spectra-g。初看这个名字,你可能会联想到“记忆痕迹”或者“思维印记”,没错,它的核心目标就是成为你个人数字思维的“…...

AI写专著高效途径:选对工具,一键生成20万字专著不是梦!

一、新手研究者撰写学术专著的困境 对于首次尝试撰写学术专著的研究者来说,写作的过程就像是在“摸石头过河”,其中充满了各种未知的障碍。选题上常常感到迷茫,难以在“有意义”与“可行性”之间找到合适的平衡,选题要么过于宏大…...

syncpack 迁移指南:从 v13 到 v14 的完整步骤与注意事项

syncpack 迁移指南:从 v13 到 v14 的完整步骤与注意事项 【免费下载链接】syncpack Consistent dependency versions in large JavaScript Monorepos. 项目地址: https://gitcode.com/gh_mirrors/sy/syncpack syncpack 是一款专为大型 JavaScript Monorepo 设…...

三自由度机械臂运动学建模与求解:从DH参数到算法验证

1. 三自由度机械臂运动学基础 刚接触机械臂控制时,我最头疼的就是运动学建模这部分。三自由度机械臂虽然结构简单,但要把它的运动规律用数学语言描述清楚,需要建立完整的理论框架。运动学主要研究机械臂末端执行器的位置、速度和加速度与各关…...

Codex 上下文提供详解与操作指南

1. 文档目标 这份文档解决的是一个非常实际的问题: 怎么给 Codex 足够完整的上下文什么信息是必须给的,什么信息是可选但高价值的怎样让 Codex 在一次任务里快速进入正确状态怎样避免“我已经说了很多,但结果还是不对”怎样把上下文提供方式变…...

从最小安装到图形桌面:CentOS 9 Stream 安装后的软件包管理与GUI环境搭建

从最小安装到图形桌面:CentOS 9 Stream 安装后的软件包管理与GUI环境搭建 当你第一次启动刚安装好的CentOS 9 Stream最小化系统时,面对那个简洁到近乎"原始"的命令行界面,可能会感到一丝不适应。别担心,这正是Linux赋予…...

从激光雷达到智能家居:深入浅出聊聊激光安全分类(Class 1/2/3/4)那点事儿

从激光雷达到智能家居:深入浅出聊聊激光安全分类(Class 1/2/3/4)那点事儿 激光技术正悄然渗透进我们生活的每个角落——从自动驾驶汽车的"眼睛"到智能门锁的指纹识别,从工业切割到医疗美容,这些看似毫不相关…...

3分钟掌握FSearch:Linux系统文件搜索效率提升300%的终极方案

3分钟掌握FSearch:Linux系统文件搜索效率提升300%的终极方案 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 还在为Linux系统中寻找文件而烦恼吗&#xff…...

FSearch深度解析:Linux极速文件搜索的技术实现与性能优化终极方案

FSearch深度解析:Linux极速文件搜索的技术实现与性能优化终极方案 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 在Linux系统中寻找文件常常是令人头疼的…...

别再乱点JIRA后台了!手把手教你配置项目专属的工单创建界面(附界面方案关联避坑点)

JIRA界面配置实战:从零构建高可用工单系统的避坑指南 当团队规模扩张到15人以上时,随意创建的JIRA工单开始暴露致命问题——用户故事缺少"验收标准"字段,缺陷报告漏填"重现步骤",而技术债务卡片却显示着完全不…...

华硕笔记本终极优化神器:GHelper完整使用教程

华硕笔记本终极优化神器:GHelper完整使用教程 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expertbook…...

智能定时任务管理:用自然语言替代Crontab,TickGPTick项目实践

1. 项目概述:一个能“听懂”你需求的定时任务管理器最近在折腾一个自动化脚本项目时,我又一次陷入了“定时任务”的泥潭。相信很多开发者都有同感:写个脚本容易,但想让它定时、可靠、有状态地跑起来,总得和 crontab、s…...

Android 显示框架:SurfaceFlinger与合成策略探析

1. SurfaceFlinger的核心角色解析 第一次拆解Android显示系统时,我被SurfaceFlinger这个名称逗笑了——"Surface抛洒者"?后来发现这个命名意外地准确。想象你正在布置多屏艺术展,SurfaceFlinger就是那个决定每幅画作展示位置、叠加…...

如何5分钟完成专业电路图:Draw.io ECE插件完全指南

如何5分钟完成专业电路图:Draw.io ECE插件完全指南 【免费下载链接】Draw-io-ECE Custom-made draw.io-shapes - in the form of an importable library - for drawing circuits and conceptual drawings in draw.io. 项目地址: https://gitcode.com/gh_mirrors/d…...

告别卡顿!用MobaXterm+PyCharm专业版,在实验室服务器上丝滑跑Python的保姆级教程

实验室服务器远程开发终极指南:MobaXterm与PyCharm专业版的高效协作方案 当你的Python脚本在本地笔记本上跑得比蜗牛还慢,而实验室那台128核的服务器却在"闲置"时,这种资源错配简直让人抓狂。作为一名常年与远程服务器打交道的算法…...

Obsidian Projects:开源文本项目管理的终极解决方案

Obsidian Projects:开源文本项目管理的终极解决方案 【免费下载链接】obsidian-projects Plain text project planning in Obsidian 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-projects 在当今信息爆炸的时代,高效的项目管理工具已成…...