# 网关转发记录曲线图接口说明 ## 接口概述 新增了一个高效的曲线图数据查询接口,用于展示网关转发记录的统计数据。该接口支持多种时间粒度的聚合查询,并提供丰富的过滤条件。 ## 接口信息 - **接口路径**: `POST /gateway/record/chart` - **请求方式**: POST - **Content-Type**: application/json ## 请求参数 ### 必填参数 | 参数名 | 类型 | 说明 | 示例 | |--------|------|------|------| | startTime | LocalDateTime | 查询开始时间 | "2024-01-01 00:00:00" | | endTime | LocalDateTime | 查询结束时间 | "2024-01-01 23:59:59" | | timeGranularity | String | 时间粒度 | "5MIN" | ### 时间粒度选项 | 值 | 说明 | 聚合方式 | |----|------|----------| | 5MIN | 5分钟 | 按5分钟间隔聚合(00:00-00:04, 00:05-00:09…) | | 1HOUR | 1小时 | 按小时聚合 | | 1DAY | 1天 | 按天聚合 | | 1WEEK | 1周 | 按周聚合(周一为起始) | | 1MONTH | 1月 | 按月聚合 | ### 可选过滤参数 | 参数名 | 类型 | 说明 | 是否支持模糊查询 | |--------|------|------|------------------| | requestUrl | String | 接口路径 | ✅ | | method | String | 请求方法 | ❌ | | targetEndpoint | String | 目的地址 | ✅ | | httpCode | Integer | HTTP状态码 | ❌ | | gatewayEndpoint | String | 网关地址 | ✅ | | minCostTime | Integer | 最小耗时(ms) | ❌ | | maxCostTime | Integer | 最大耗时(ms) | ❌ | | routeId | Long | 路由ID | ❌ | | routeName | String | 路由名称 | ✅ | ## 请求示例 ```json { "startTime": "2024-01-01 00:00:00", "endTime": "2024-01-01 23:59:59", "timeGranularity": "1HOUR", "requestUrl": "/api/user", "method": "GET", "minCostTime": 100, "maxCostTime": 5000} ``` ## 响应数据结构 ```json { "code": 200, "msg": "操作成功", "data": { "dataPoints": [ { "timePoint": "2024-01-01 00:00:00", "count2xx": 150, "count4xx": 10, "count5xx": 2, "countOther": 1, "avgCostTime": 245.67 }, { "timePoint": "2024-01-01 01:00:00", "count2xx": 200, "count4xx": 15, "count5xx": 3, "countOther": 0, "avgCostTime": 198.34 } ] }} ``` ## 响应字段说明 ### dataPoints 数组中每个元素的字段 | 字段名 | 类型 | 说明 | |--------|------|------| | timePoint | LocalDateTime | 时间点(X轴) | | count2xx | Long | 2xx状态码请求次数(左Y轴) | | count4xx | Long | 4xx状态码请求次数(左Y轴) | | count5xx | Long | 5xx状态码请求次数(左Y轴) | | countOther | Long | 其他状态码请求次数(左Y轴) | | avgCostTime | BigDecimal | 平均耗时ms,保留2位小数(右Y轴) | ## 性能优化说明 1. **索引优化**: 建议在 `request_time` 字段上创建索引以提高查询效率 2. **模糊查询**: 仅在 `requestUrl`、`targetEndpoint`、`gatewayEndpoint`、`routeName` 字段支持模糊查询 3. **时间范围**: 建议查询时间范围不要过大,以保证响应速度 4. **聚合查询**: 使用数据库层面的聚合查询,减少内存占用 ## 前端图表建议 - **左Y轴**: 显示请求次数(count2xx, count4xx, count5xx, countOther) - **右Y轴**: 显示平均耗时(avgCostTime) - **X轴**: 显示时间(timePoint) - **图表类型**: 建议使用折线图或柱状图 - **颜色建议**: - 2xx: 绿色(成功) - 4xx: 橙色(客户端错误) - 5xx: 红色(服务器错误) - 其他: 灰色 - 平均耗时: 蓝色 ## 注意事项 1. 时间粒度为左闭右开区间 2. 大数据量查询时建议适当限制时间范围 3. 模糊查询会影响性能,请谨慎使用 4. 平均耗时为0表示该时间段内没有有效的耗时数据