# API接口封装使用说明 ## 📋 概述 已为您封装了完整的HTTP请求工具和API接口,包括您需要的历史数据接口。 ## 🛠️ 封装内容 ### 1. HTTP请求工具 (`src/utils/http.js`) - 基于uni.request封装的通用HTTP工具类 - 支持GET、POST、PUT、DELETE请求 - 支持文件上传和下载 - 统一的错误处理和日志记录 - 可配置的基础URL、超时时间、请求头 ### 2. API接口封装 (`src/utils/api.js`) - 统一管理所有API接口 - 包含历史数据、设备、环境参数、报警、日志、用户等接口 - 模块化设计,便于维护和扩展 ### 3. 全局注册 (`src/main.js`) - 将HTTP服务和API注册为全局属性 - 在Vue组件中可直接使用`this.$http`和`this.$api` ## 🎯 历史数据接口 ### 接口信息 - **URL**: `http://110.40.171.179:7999/api/data/history` - **方法**: POST - **入参**: ```json { "startTime": "2025-09-30 06:51:40", "endTime": "2025-09-30 23:51:40" } ``` ### 使用方式 #### 方式1: 直接使用API ```javascript import { dataHistoryApi } from '@/utils/api.js' // 获取历史数据 const getHistoryData = async () => { try { const response = await dataHistoryApi.getHistory({ startTime: "2025-09-30 06:51:40", endTime: "2025-09-30 23:51:40" }) console.log('历史数据:', response) } catch (error) { console.error('获取失败:', error) } } ``` #### 方式2: 在Vue组件中使用 ```javascript export default { data() { return { historyData: [] } }, methods: { async loadHistoryData() { try { uni.showLoading({ title: '加载历史数据中...' }) const response = await this.$api.dataHistory.getHistory({ startTime: "2025-09-30 06:51:40", endTime: "2025-09-30 23:51:40" }) if (response.code === 200) { this.historyData = response.data uni.showToast({ title: '数据加载成功', icon: 'success' }) } } catch (error) { console.error('加载失败:', error) uni.showToast({ title: error.message || '数据加载失败', icon: 'error' }) } finally { uni.hideLoading() } } } } ``` #### 方式3: 使用HTTP服务 ```javascript // 直接使用HTTP服务 const response = await this.$http.post('/api/data/history', { startTime: "2025-09-30 06:51:40", endTime: "2025-09-30 23:51:40" }) ``` ## 📚 其他API接口 ### 设备相关接口 ```javascript // 获取设备详情 const device = await this.$api.device.getDetail('deviceId') // 获取设备列表 const devices = await this.$api.device.getList({ page: 1, size: 10 }) // 更新设备状态 await this.$api.device.updateStatus('deviceId', 'online') ``` ### 环境参数接口 ```javascript // 获取环境参数 const params = await this.$api.environment.getParams() // 获取环境参数历史 const history = await this.$api.environment.getHistory({ startTime: "2025-09-30 06:51:40", endTime: "2025-09-30 23:51:40" }) ``` ### 报警相关接口 ```javascript // 获取报警记录 const alarms = await this.$api.alarm.getRecords({ page: 1, size: 10 }) // 获取报警统计 const statistics = await this.$api.alarm.getStatistics() // 处理报警 await this.$api.alarm.handleAlarm('alarmId', 'resolved') ``` ### 系统日志接口 ```javascript // 获取系统日志 const logs = await this.$api.log.getLogs({ page: 1, size: 10 }) // 获取日志统计 const statistics = await this.$api.log.getStatistics() ``` ### 用户相关接口 ```javascript // 用户登录 const loginResult = await this.$api.user.login({ username: 'admin', password: 'password' }) // 获取用户信息 const userInfo = await this.$api.user.getUserInfo() // 更新用户信息 await this.$api.user.updateUserInfo({ name: '新用户名' }) ``` ## ⚙️ 配置选项 ### 修改基础URL ```javascript // 在main.js中或组件中修改 this.$http.setBaseURL('https://your-api-domain.com') ``` ### 修改超时时间 ```javascript this.$http.setTimeout(15000) // 15秒 ``` ### 添加默认请求头 ```javascript this.$http.setDefaultHeaders({ 'Authorization': 'Bearer your-token', 'X-Custom-Header': 'custom-value' }) ``` ## 🔧 错误处理 ### 统一错误处理 ```javascript try { const response = await this.$api.dataHistory.getHistory(params) // 处理成功响应 } catch (error) { // 统一错误处理 console.error('API请求失败:', error.message) // 显示用户友好的错误信息 uni.showToast({ title: error.message || '请求失败', icon: 'error' }) } ``` ### 自定义错误处理 ```javascript // 在http.js中可以自定义错误处理逻辑 // 例如:根据错误码显示不同的提示信息 ``` ## 📝 使用示例 ### 完整的使用示例 ```javascript export default { data() { return { historyData: [], loading: false } }, async onLoad() { await this.loadHistoryData() }, methods: { async loadHistoryData() { this.loading = true try { // 获取今天的数据 const today = new Date() const startTime = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0) const endTime = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 23, 59, 59) const response = await this.$api.dataHistory.getHistory({ startTime: this.formatDateTime(startTime), endTime: this.formatDateTime(endTime) }) if (response.code === 200) { this.historyData = response.data } else { throw new Error(response.message || '数据加载失败') } } catch (error) { console.error('加载历史数据失败:', error) uni.showModal({ title: '提示', content: error.message || '数据加载失败,请重试', showCancel: false }) } finally { this.loading = false } }, formatDateTime(date) { const year = date.getFullYear() const month = String(date.getMonth() + 1).padStart(2, '0') const day = String(date.getDate()).padStart(2, '0') const hours = String(date.getHours()).padStart(2, '0') const minutes = String(date.getMinutes()).padStart(2, '0') const seconds = String(date.getSeconds()).padStart(2, '0') return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}` } } } ``` ## 🎉 总结 现在您可以在项目中使用封装好的API接口: 1. **历史数据接口**: `this.$api.dataHistory.getHistory(params)` 2. **其他业务接口**: 设备、环境、报警、日志、用户等 3. **HTTP服务**: `this.$http` 用于自定义请求 4. **统一错误处理**: 自动处理网络错误和业务错误 5. **日志记录**: 自动记录请求和响应日志 所有接口都已经配置好基础URL `http://110.40.171.179:7999`,您可以直接使用!