Jeecg-Boot 开放接口开发实战:在 Jeecg-Boot 的jeecg-system-biz中添加一个controller 实现免鉴权数据接口

Jeecg-Boot 开放接口开发实战:在 Jeecg-Boot 的jeecg-system-biz中添加一个controller 实现免鉴权数据接口

一、场景需求分析

在微服务架构中,常需要快速实现以下两类接口:

  • 开放接口:无需登录即可访问(如数据查询、状态检测)
  • 鉴权接口:需验证用户身份(如数据修改、敏感操作)
    本文将以 SimpleDemoController 为例,演示如何快速实现开放接口,并集成Swagger文档支持。

二、工程结构规范

推荐按功能模块组织代码结构:

src/main/java
└── org.jeecg.modules.system├── controller      │   └── demo       # 按功能创建子包│       └── SimpleDemoController.java├── config         # 配置文件目录└── ...

开发三原则

  1. 接口路径统一前缀 /api/模块名
  2. Controller类名以功能+Controller结尾
  3. 每个接口添加Swagger注解

三、在 IntelliJ IDEA 中创建 SimpleDemoController
步骤 1:定位目标模块

打开 Jeecg-Boot 项目
在 Project 窗口 找到 jeecg-system-biz 模块,如下:
在这里插入图片描述

步骤 2:在Controller包下新建 Controller 类

右键新建的包路径
选择 New → Java Class
输入类名 SimpleDemoController
使用快捷键 Alt+Insert 添加类注释:

/*** 系统演示接口* @author 你的名字* @since 2024-01-01*/
步骤3:编写核心代码
3.1 基础接口实现
package org.jeecg.modules.system.controller;
import org.jeecg.common.api.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Api(tags = "系统演示接口")  
@RequestMapping("/system/api/simple")
public class SimpleDemoController {/*** 开放接口示例* 访问路径:/jeecg-boot/system/api/simple/demo*/@GetMapping("/demo")@ApiOperation(value = "简单数据获取", notes = "无需参数,返回动态时间戳") public Result<String> getSimpleData() {return Result.ok("Hello JeecgBoot! Timestamp: " + System.currentTimeMillis());}
}

######.2 关键注解解析

注解作用说明必填
@RestController声明为RESTful控制器✔️
@RequestMapping定义控制器基础路径✔️
@GetMapping映射GET请求✔️
@ApiSwagger模块分类✔️
@ApiOperation接口文档说明推荐

四、安全配置要点
4.1 配置免鉴权路径

application-dev.yml 中添加白名单:

shiro:excludeUrls:- /system/api/simple/demo  # 开放接口路径- /swagger-ui.html         # Swagger文档- /**/*.js                 # 静态资源
4.2 访问权限验证
  • 访问开放接口:直接调用
  • 未配置的接口:自动跳转登录页(HTTP 401)

五、接口测试方案
5.1 Swagger在线测试

访问 http://localhost:8080/jeecg-boot/doc.html
在这里插入图片描述可以看到我们刚才添加的API接口。

5.2 Postman调试
### 开放接口测试
GET {{host}}/jeecg-boot/system/api/simple/demo
Content-Type: application/json
### 错误请求测试(未配置白名单)
GET {{host}}/jeecg-boot/system/api/secure-data
5.3 前端调用示例
// Axios调用示例
axios.get('/jeecg-boot/system/api/simple/demo').then(response => {console.log('接口返回:', response.data);}).catch(error => {console.error('请求异常:', error);});

六、高频问题排查
6.1 接口404错误
  1. 检查启动类扫描范围是否包含Controller包
  2. 确认访问路径包含上下文 /jeecg-boot
  3. 验证是否存在路径冲突
6.2 Swagger未显示接口
// 检查Swagger配置类
@Bean
public Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("org.jeecg.modules.system.controller")) .paths(PathSelectors.any()).build();
}
6.3 跨域问题处理

在跨域过滤器添加配置:

config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
七、扩展开发建议
  1. 接口版本控制:路径添加版本号 /v1/api/...
  2. 请求日志记录
@AutoLog(value = "demo接口", operateType=1)
@GetMapping("/demo")
  1. 参数校验机制
public Result<?> getData(@NotBlank String id) {// 业务逻辑
}

结语

通过本文的实践,您已掌握Jeecg-Boot开放接口的开发全流程。建议在实际项目中:

  1. 严格管理白名单路径
  2. 生产环境关闭Swagger文档
  3. 使用HTTPS加密敏感数据传输
    扩展阅读
    Jeecg-Boot官方开发文档
    Spring Boot接口安全最佳实践

原创声明:本文为作者实战经验总结,转载请注明出处。技术交流欢迎私信或留言!

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

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

相关文章

C++ ++++++++++

初始C 注释 变量 常量 关键字 标识符命名规则 数据类型 C规定在创建一个变量或者常量时&#xff0c;必须要指定出相应的数据类型&#xff0c;否则无法给变量分配内存 整型 sizeof关键字 浮点型&#xff08;实型&#xff09; 有效位数保留七位&#xff0c;带小数点。 这个是保…

构建安全的Docker基础镜像:从最佳实践到自动化加固

引言 容器化技术的普及使得Docker镜像成为软件交付的核心载体,但镜像中的安全漏洞、敏感信息泄露和权限配置不当等问题可能引发严重风险。本文结合OWASP容器安全指南与一线运维经验,系统化讲解如何构建安全的Docker基础镜像,覆盖镜像构建、依赖管理、运行时防护全链路,并提…

BKA-CNN基于黑翅鸢算法优化卷积神经网络的数据多特征分类预测Matlab

BKA-CNN基于黑翅鸢算法优化卷积神经网络的数据多特征分类预测Matlab 目录 BKA-CNN基于黑翅鸢算法优化卷积神经网络的数据多特征分类预测Matlab分类效果基本介绍BKA-CNN基于黑翅鸢算法优化卷积神经网络的数据多特征分类预测一、引言1.1、研究背景和意义1.2、研究现状1.3、研究目…

SOLID Principle基础入门

(Robert C. Martin (Uncle Bob)) 什么是SOLID原则&#xff1f; SOLID原则是面向对象编程&#xff08;OOP&#xff09;中编写高质量代码的指导方针。实际上&#xff0c;即使不使用SOLID原则&#xff0c;仅通过类、继承、封装和多态性&#xff0c;也可以让程序正常运行。那么为…

轻松实现语音生成:GPT-SoVITS V2整合包的远程访问操作详解

文章目录 前言1.GPT-SoVITS V2下载2.本地运行GPT-SoVITS V23.简单使用演示4.安装内网穿透工具4.1 创建远程连接公网地址 5. 固定远程访问公网地址 前言 今天要给大家安利一个绝对能让你大呼过瘾的声音黑科技——GPT-SoVITS&#xff01;这款由花儿不哭大佬精心打造的语音克隆神…

Python线程池知多少

目录 目标 Python版本 官方文档 概述 线程池 实战 创建线程池的基本语法 批量提交任务 生产者&消费者模型 目标 掌握线程池的基本概念和使用方法。 Python版本 Python 3.9.18 官方文档 concurrent.futures — Launching parallel taskshttps://docs.python.org/3…

(转)SpringBoot和SpringCloud的区别

&#xff08;转&#xff09;SpringBoot和SpringCloud的区别&#xff1a;

中科大 计算机网络组成原理 1.4 接入网和物理媒体 笔记

一、接入网核心功能与架构 ‌核心作用‌ 接入网是连接用户终端与核心网络的桥梁&#xff0c;承担用户身份认证、带宽分配、数据加密等功能&#xff0c;直接影响网络服务的可靠性和用户体验。例如&#xff0c;杭州电视台的数字人主播通过光纤专线实现零失误新闻播报&#xff0c;…

阿里云音频算法岗内推

1、视频云直播、连麦&#xff0c;点播&#xff0c;短视频&#xff0c;媒体生产与处理等服务相关的实时/非实时的音频分析和处理&#xff1b; 2、音频处理算法&#xff0c;包括多场景降噪、自动增益控制、回声消除等&#xff1b; 3、音频特效算法研发&#xff0c;包括变调变速…

如何使用DeepSeek辅助准备面试

前言 又到了金三银四的时间点了。每年的这个时间点都会出现无数的机遇和机会&#xff0c;但是如何准备面试&#xff0c;应该准备哪些面试题&#xff0c;如何查漏补缺我们的技术面的短板&#xff0c;这是我们每次准备面试的时候&#xff0c;都会遇见的问题。在今年&#xff0c;…

如何流畅访问github

1.传输数据原理 本地计算机通过本地网接入运营骨干网&#xff0c;经过DNS域名解析&#xff0c;将输入的字符解析为要连接的真实IP地址&#xff0c;服务器返还一个数据包(github)给计算机 2.原因 DNS域名污染-DNS解析出现问题&#xff0c;导致访问一个不存在的服务器 3.解决…

JPA属性转换器的使用与实例解析

在Java持久化框架中&#xff0c;JPA&#xff08;Java Persistence API&#xff09;为我们提供了强大的功能来操作数据库。其中&#xff0c;属性转换器&#xff08;Attribute Converter&#xff09;是一个非常实用的特性&#xff0c;它允许我们将实体类中的属性类型转换为适合存…

AI数据分析:用DeepSeek做数据清洗

在当今数据驱动的时代&#xff0c;数据分析已成为企业和个人决策的重要工具。随着人工智能技术的快速发展&#xff0c;AI 驱动的数据分析工具正在改变我们处理和分析数据的方式。本文将着重介绍如何使用 DeepSeek 进行数据清洗。 数据清洗是数据分析的基础&#xff0c;其目的是…

rust学习~tokio的io

await Suspend execution until the result of a Future is ready. 暂停执行&#xff0c;直到一个 Future 的结果就绪。 .awaiting a future will suspend the current function’s execution until the executor has run the future to completion. 对一个 Future 使用 .awa…

腾讯2025年软件测试面试题

以下是基于腾讯等一线互联网公司软件测试岗位的面试趋势和技术要求,025年出现的软件测试面试题。这些问题涵盖了基础知识、自动化测试、性能测试、安全测试、编程能力等多个方面,供参考和准备。 一、基础知识 软件测试的基本概念

数据结构(陈越,何钦铭) 第四讲 树(中)

4.1 二叉搜索树 4.1.1 二叉搜索树及查找 Position Find(ElementTyoe X,BinTree BST){if(!BST){return NULL;}if(X>BST->Data){return Find(X,BST->Right)}else if(X<BST->Data){return Find(X,BST->Left)}else{return BST;} } Position IterFind(ElementTyp…

GEE学习笔记 28:基于Google Earth Engine的Landsat8缨帽变换土壤指数反演——亮度、绿度与湿度分量的提取

1.缨帽变换介绍 缨帽变换(Tasseled Cap Transformation,TCT),也称为缨帽特征空间或缨帽系数,是一种用于遥感图像分析的线性变换方法。它最初由美国农业部的研究人员E. Kauth和G. Thomas在1976年提出,用于增强陆地卫星(Landsat)图像中的特定地表特征,如植被、土壤和城市…

【现代Web布局与动画技术:卡片组件实战分享】

&#x1f4f1; 现代Web布局与动画技术&#xff1a;卡片组件实战分享 &#x1f680; 引言 &#x1f31f; 在过去的开发过程中&#xff0c;我们共同实现了一个功能丰富的卡片组件&#xff0c;它不仅美观&#xff0c;还具有交互性和响应式设计。这篇文章将分享这个组件背后的技术…

学习路之PHP --TP6异步执行功能 (无需安装任何框架)

学习路之PHP --异步执行功能 &#xff08;无需安装任何框架&#xff09; 简介一、工具类二、调用三、异步任务的操作四、效果&#xff1a; 简介 执行异步任务是一种很常见的需求&#xff0c;如批量发邮箱&#xff0c;短信等等执行耗时任务时&#xff0c;需要程序异步执行&…

STM32之影子寄存器

预分频寄存器计数到一半的时候&#xff0c;改变预分频值&#xff0c;此时不会立即生效&#xff0c;会等到计数完成&#xff0c;再从影子寄存器即预分频缓冲器里装载修改的预分频值。 如上图&#xff0c;第一行是内部时钟72M&#xff0c;第二行是时钟使能&#xff0c;高电平启动…