AJ-Report API接口终极指南:构建企业级数据可视化平台
AJ-Report是一个完全开源的拖拽式可视化设计工具,通过其强大的API接口体系,让企业能够快速构建专业级的数据可视化大屏。无论是数据源管理、数据集配置还是大屏设计,AJ-Report都提供了完整的RESTful API支持,帮助开发者轻松集成到现有系统中。
🚀 AJ-Report API核心架构
AJ-Report采用前后端分离架构,后端基于Spring Boot 2.3.5,前端基于Vue.js,API接口设计遵循RESTful规范。整个系统包含四大核心模块:
1. 数据源管理API
数据源是AJ-Report的基础,支持多种数据库类型:
// 前端API调用示例 - reportDataSource.js
export function reportDataSourceList(params) {
return request({
url: 'dataSource/pageList',
method: 'GET',
params,
})
}
export function testConnection(data) {
return request({
url: '/dataSource/testConnection',
method: 'post',
data,
})
}
后端控制器位于 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/datasource/controller/DataSourceController.java,提供完整的数据源CRUD操作。
AJ-Report支持MySQL、Elasticsearch、Kudu等多种数据源类型
2. 数据集配置API
数据集是连接数据源和大屏的桥梁,支持SQL查询和HTTP接口:
// 数据集API - reportDataSet.js
export function queryAllDataSet(data) {
return request({
url: 'dataSet/queryAllDataSet',
method: 'get',
})
}
export function detailBysetId(data) {
return request({
url: 'dataSet/detailBysetId/' + data,
method: 'get',
})
}
后端控制器在 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/dataset/controller/DataSetController.java 中实现。
3. 大屏设计API
大屏设计是AJ-Report的核心功能,支持拖拽式组件配置:
// 大屏API - bigscreen.js
export function insertDashboard(data) {
return request({
url: 'reportDashboard',
method: 'post',
data,
})
}
export function detailDashboard(data) {
return request({
url: 'reportDashboard/' + data,
headers: { 'Share-Token': getShareToken(), 'Authorization': getToken() },
method: 'get',
})
}
AJ-Report大屏设计支持30+种图表组件,满足各种业务场景需求
4. 报表管理API
报表管理提供完整的生命周期管理:
// 报表API - reportmanage.js
export function reportList(params) {
return request({
url: 'report/pageList',
method: 'GET',
params,
})
}
export function reportAdd(data) {
return request({
url: 'report',
method: 'post',
data
})
}
🔧 快速开始:AJ-Report API集成指南
环境准备
- 后端环境:JDK 1.8+、MySQL 5.7+
- 前端环境:Node.js 12+、npm 6+
- 项目结构:
- 后端源码:
report-core/ - 前端源码:
report-ui/ - 文档资料:
doc/docs/
- 后端源码:
API认证与授权
AJ-Report使用JWT Token进行API认证:
// 登录接口 - login/index.js
export function login(data) {
return request({
url: '/accessUser/login',
method: 'post',
data
})
}
// 请求拦截器配置 - axios.js
service.interceptors.request.use(config => {
const token = getToken()
if (token) {
config.headers['Authorization'] = token
}
return config
})
数据源配置示例
配置MySQL数据源:
{
"sourceName": "生产数据库",
"sourceCode": "PROD_DB",
"sourceType": "jdbc",
"driverClass": "com.mysql.cj.jdbc.Driver",
"sourceUrl": "jdbc:mysql://localhost:3306/aj_report?useUnicode=true&characterEncoding=utf8",
"username": "root",
"password": "password",
"remark": "生产环境主数据库"
}
📊 实战案例:构建销售数据大屏
步骤1:配置数据源
通过API创建数据源连接:
POST /dataSource
Content-Type: application/json
{
"sourceName": "销售数据库",
"sourceType": "jdbc",
"driverClass": "com.mysql.cj.jdbc.Driver",
"sourceUrl": "jdbc:mysql://localhost:3306/sales_db",
"username": "sales_user",
"password": "encrypted_password"
}
步骤2:创建数据集
配置销售数据查询:
POST /dataSet
Content-Type: application/json
{
"setCode": "SALES_MONTHLY",
"setName": "月度销售数据",
"sourceCode": "PROD_DB",
"dynSentence": "SELECT DATE_FORMAT(order_date, '%Y-%m') as month,
SUM(amount) as total_sales,
COUNT(*) as order_count
FROM sales_orders
GROUP BY DATE_FORMAT(order_date, '%Y-%m')
ORDER BY month DESC",
"setDesc": "月度销售统计"
}
步骤3:设计大屏
使用大屏设计API创建可视化图表:
// 获取动态数据
export function getData(data) {
return request({
url: 'reportDashboard/getData',
method: 'post',
headers: { 'Share-Token': getShareToken(), 'Authorization': getToken() },
data,
})
}
AJ-Report支持丰富的图表配置选项,包括折线图、柱状图、饼图等
步骤4:分享与导出
分享大屏给团队成员:
POST /reportShare
Content-Type: application/json
{
"reportCode": "SALES_DASHBOARD_2024",
"shareType": "PUBLIC",
"expireTime": "2024-12-31 23:59:59",
"sharePassword": "optional_password"
}
🛠️ 高级功能API详解
1. 数据转换API
支持Groovy、JavaScript等脚本进行数据转换:
// DataSetTransformController.java
@PostMapping("/testTransform")
public ResponseBean testTransform(@RequestBody DataSetTransformParam param) {
return ResponseBean.builder().data(dataSetTransformService.testTransform(param)).build();
}
2. 权限管理API
完整的RBAC权限控制:
// 角色权限管理 - accessRole.js
export function authorityTree(data) {
return request({
url: 'accessRole/authorityTree/' + data,
method: 'get',
})
}
export function saveAuthorityTree(data) {
return request({
url: 'accessRole/saveAuthorityTree',
method: 'post',
data,
})
}
3. 文件上传API
支持图片、Excel等文件上传:
// 文件上传 - file.js
export function uploadFile(data) {
return request({
url: '/file/upload',
method: 'post',
data,
})
}
🔍 API错误处理与调试
统一响应格式
所有API返回统一格式:
{
"code": 200,
"repMsg": "操作成功",
"data": {},
"timestamp": 1648204800000
}
常见错误码
200: 成功50014: Token过期3100: 参数验证失败3101: 业务逻辑错误
调试工具
- Swagger UI: 访问
/swagger-ui.html - Postman: 导入API文档
- 前端调试: 浏览器开发者工具
📈 性能优化建议
1. 数据缓存策略
// 使用Redis缓存热点数据
@Cacheable(value = "dataset", key = "#setCode")
public DataSetDto detailBysetCode(String setCode) {
return dataSetService.detailBysetCode(setCode);
}
2. 数据库连接池优化
# application.yml配置
spring:
datasource:
hikari:
maximum-pool-size: 20
minimum-idle: 5
connection-timeout: 30000
3. 前端性能优化
// 使用防抖处理频繁请求
import { debounce } from '@/utils/common'
export const searchDataSource = debounce(function(params) {
return reportDataSourceList(params)
}, 300)
🎯 最佳实践
1. 安全性最佳实践
- 使用HTTPS传输敏感数据
- 定期轮换JWT Token密钥
- 实施API限流和防刷策略
- 记录所有API访问日志
2. 可维护性最佳实践
- 统一的API版本管理 (
/api/v1/) - 详细的API文档注释
- 完整的单元测试覆盖
- 监控和告警机制
3. 扩展性最佳实践
- 插件化架构设计
- 支持自定义数据源驱动
- 可配置的图表组件
- 模块化的权限系统
📚 学习资源与支持
官方文档
- 快速开始指南:
doc/docs/guide/quicklyUse.md - 数据源配置:
doc/docs/guide/datasource.md - 数据集使用:
doc/docs/guide/dataset.md - 大屏设计:
doc/docs/guide/bigScreenCase.md
社区支持
- 在线体验:https://ajreport.beliefteam.cn
- 问题反馈:查看项目Issues
- 源码贡献:遵循项目贡献指南
总结
AJ-Report API接口为企业级数据可视化提供了完整的解决方案。通过本文的指南,您可以快速掌握如何:
- 配置多数据源连接
- 创建和管理数据集
- 设计交互式大屏
- 集成到现有业务系统
- 实施安全与性能优化
无论是初创公司还是大型企业,AJ-Report都能帮助您快速构建专业的数据可视化平台,让数据驱动决策成为现实。开始您的数据可视化之旅吧!🚀
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



