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 # 配置文件目录
└── ...
开发三原则:
- 接口路径统一前缀
/api/模块名
- Controller类名以功能+Controller结尾
- 每个接口添加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请求 | ✔️ |
@Api | Swagger模块分类 | ✔️ |
@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错误
- 检查启动类扫描范围是否包含Controller包
- 确认访问路径包含上下文
/jeecg-boot
- 验证是否存在路径冲突
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("*");
七、扩展开发建议
- 接口版本控制:路径添加版本号
/v1/api/...
- 请求日志记录:
@AutoLog(value = "demo接口", operateType=1)
@GetMapping("/demo")
- 参数校验机制:
public Result<?> getData(@NotBlank String id) {
// 业务逻辑
}
结语
通过本文的实践,您已掌握Jeecg-Boot开放接口的开发全流程。建议在实际项目中:
- 严格管理白名单路径
- 生产环境关闭Swagger文档
- 使用HTTPS加密敏感数据传输
扩展阅读:
Jeecg-Boot官方开发文档
Spring Boot接口安全最佳实践
原创声明:本文为作者实战经验总结,转载请注明出处。技术交流欢迎私信或留言!