# OPWebAPI **Repository Path**: Evan_Jing/OPWebAPI ## Basic Information - **Project Name**: OPWebAPI - **Description**: 数据web api - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-01 - **Last Updated**: 2022-11-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OPWebAPI ## 介绍 数据库web api,后台使用golang原生http实现,使用jwt Token认证 ## 使用说明 修改config.yaml文件,运行程序,接口信息请参考下面 ## 接口 除了获取接口说明页面的接口,其它接口都是返回标准的数据格式。所有的参数都是以json方式返回,返回结果有三个参数:flag,message,data.其中flag小于0 的时候是接口调用异常,message是对应的错误信息。当flag为0的时候,是接口正常调用,message都为OK,data是对应的返回数据信息。data包含两个字段 columns和rows,columns是对应的请求字段信息,rows是对应数据结果,格式是map,key都是存在于columns中的。除login和index请求,其它请求要在 header中添加Authorization参数,值为login获取的data。login示例可以看下面的示例,insert的示例在insert 说明里面,其他示例可以参考两个使用。 ###0. login(获取Token) 说明:获取通信认证token 参数: user: 配置的用户名 password: 配置的密码 period: token有效期,单位分钟 返回: 标准结果 示例 var url = "http://127.0.0.1" function login() { var user = $('#user').val(); var password = $('#password').val(); var period = $('#period').val(); $.ajax({ type: 'post', url: url + '/login', data: { user: user, password: password, period: period }, dataType: 'json', success: function (data) { if (data.flag < 0) { errorSwal(data.message) } else { data = data.data; $('#token').val(data); } }, error: function () { errorSwal('获取信息失败'); } }); } ###1. index(说明文档) 说明:访问说明文档 参数:无 返回:页面 ###2. getServerTime(获取服务器时间) 说明:获取数据库时间 参数:无 返回: 标准格式 data是对应的数据库时间 ###3. find(不带条件查询) 说明:不带查询条件获取DataBase、Node、Point、Realtime、Alarm 数据 参数: tableName: 表名 field: 查询字段的字符串,以逗号分隔 offset: 开始记录 limit: 偏移量 返回: 标准结果 ###4. findById(通过ID查询) 说明:通过GN集合条件获取DataBase、Node、Point、Realtime、Alarm 数据 参数: tableName: 表名 field: 查询字段的字符串,以逗号分隔 ids: ID字符串,以逗号分隔 offset: 开始记录 limit: 偏移量 返回: 标准结果 ###5. findByGn(通过GN查询) 说明:通过GN集合条件获取DataBase、Node、Point、Realtime、Alarm 数据 参数: tableName: 表名 field: 查询字段的字符串,以逗号分隔 gns: GN字符串,以逗号分隔 offset: 开始记录 limit: 偏移量 返回: 标准结果 ###6. getArchiveById(通过ID获取历史) 说明:通过ID获取获取历史数据 参数: field: 查询字段的字符串,以逗号分隔 beginDate: 开始时间 格式 yyyy-MM-dd hh:mm:ss或者秒数据 endDate: 结束日期 格式 yyyy-MM-dd hh:mm:ss或者秒数据 ids: ID字符串,以逗号分隔 mode: 数据模式(可选) interval: 间隔时间(可选,配合mode使用) offset: 开始记录 limit: 偏移量 返回: 标准结果 ###7. getArchiveByGn(通过GN获取历史) 说明:通过GN获取获取历史数据 参数: field: 查询字段的字符串,以逗号分隔 beginDate: 开始时间 格式 yyyy-MM-dd hh:mm:ss或者秒数据 endDate: 结束日期 格式 yyyy-MM-dd hh:mm:ss或者秒数据 gns: GN字符串,以逗号分隔 mode: 数据模式(可选) interval: 间隔时间(可选,配合mode使用) offset: 开始记录 limit: 偏移量 返回: 标准结果 ###8. getStatById(通过ID获取统计信息) 说明:通过ID获取获取统计数据 参数: field: 查询字段的字符串,以逗号分隔 beginDate: 开始时间 格式 yyyy-MM-dd hh:mm:ss或者秒数据 endDate: 结束日期 格式 yyyy-MM-dd hh:mm:ss或者秒数据 ids: ID字符串,以逗号分隔 interval: 间隔时间 offset: 开始记录 limit: 偏移量 返回: 标准结果 ###9. getStatByGn(通过GN获取统计信息) 说明:通过GN获取获取统计数据 参数: field: 查询字段的字符串,以逗号分隔 beginDate: 开始时间 格式 yyyy-MM-dd hh:mm:ss或者秒数据 endDate: 结束日期 格式 yyyy-MM-dd hh:mm:ss或者秒数据 gns: GN字符串,以逗号分隔 interval: 间隔时间 offset: 开始记录 limit: 偏移量 返回: 标准结果 ###10. getAAlarm(获取报警历史) 说明:不带查询条件获取报警历史数据 参数: field: 查询字段的字符串,以逗号分隔 beginDate: 开始时间 格式 yyyy-MM-dd hh:mm:ss或者秒数据 endDate: 结束日期 格式 yyyy-MM-dd hh:mm:ss或者秒数据 offset: 开始记录 limit: 偏移量 返回: 标准结果 ###11. getAAlarmById(通过ID获取报警历史) 说明:通过ID获取报警历史数据 参数: field: 查询字段的字符串,以逗号分隔 beginDate: 开始时间 格式 yyyy-MM-dd hh:mm:ss或者秒数据 endDate: 结束日期 格式 yyyy-MM-dd hh:mm:ss或者秒数据 ids: ID字符串,以逗号分隔 offset: 开始记录 limit: 偏移量 返回: 标准结果 ###12. getAAlarmByGn(通过GN获取报警历史) 说明:通过GN获取报警历史数据 参数: field: 查询字段的字符串,以逗号分隔 beginDate: 开始时间 格式 yyyy-MM-dd hh:mm:ss或者秒数据 endDate: 结束日期 格式 yyyy-MM-dd hh:mm:ss或者秒数据 gns: GN字符串,以逗号分隔 offset: 开始记录 limit: 偏移量 返回: 标准结果 ###13. query(执行SQL) 说明:执行sql 参数: sql: SQL语句 返回: 标准结果 ###14. insert(写数据) 说明:通过api插入数据 参数: tableName: Point、Node、DataBase,只能是这三个 field: 要插入的字段 rows: 数据数组,数组里面的数据以','分隔 返回: 标准结果 示例: var token = $('#token').val(); if (!token) { errorSwal('请先登录'); return; } var tableName = $('#tableName').val(); var field = $('#columns').val(); var rows = new Array(); rows.push('W3.TEST.W1,0'); rows.push('W3.TEST.W2,1'); $.ajax({ method: 'post', url: url + '/insert', beforeSend: function (request) { request.setRequestHeader("Authorization", token); }, data: { tableName: tableName, field: field, rows: rows }, dataType: 'json', success: function (data) { if (data.flag < 0) { errorSwal(data.message) } else { $('#message').val(JSON.stringify(data)); } }, error: function () { errorSwal('获取信息失败'); } }) ###15. insertDataById(通过ID写数据) 说明:通过ID写数据 参数: tableName: 表名 Realtime和Archive二选一 field: 要更新的字段,以','分隔, ID和AV必须有,如果是Archive TM也必须有,DS字段可选,ID、AV、TM、DS 只能是这几个字段,TM是int或float类型的秒数据 rows: 数据数组,数组里面的数据以','分隔 返回: 标准结果 ###16. insertDataByGn(通过点名写数据) 说明:通过点名写数据 参数: tableName: 表名 Realtime和Archive二选一 field: 要更新的字段,以','分隔, GN和AV必须有,如果是Archive TM也必须有,DS字段可选,GN、AV、TM、DS 只能是这几个字段,TM是int或float类型的秒数据 rows: 数据数组,数组里面的数据以','分隔 返回: 标准结果 ###17. update(更新数据) 说明:更新数据 参数: tableName: Point、Node、DataBase,只能是这三个 field: 要更新的字段,以','分隔,ID或GN必须有一个,二者选其一 rows: 数据数组,数组里面的数据以','分隔 返回: 标准结果 ###18. delete(执行删除) 说明:执行sql 参数: tableName: Point、Node、DataBase,只能是这三个 field: ID或GN,二者选其一 rows: 对应的数据,以','分隔 返回: 标准结果 ##返回结果说明 ###1、返回结果Message里面有个Data字段,Data属性可能有个EC字段,标记对应的操作返回状态 ## 版本说明 ### V0.2 2019-08-27 1、添加token严格性验证、完善文档 ### V0.2 2019-08-26 2、添加插入、更新、删除、写数据等接口 ### V0.1 2019-06-14 3、初始化项目、创建查询接口、添加token认证 ### V0.1 2019-11-19 4、扩展支持Post请求 ## 参与贡献 1. se7en 创建本项目 2. 新建 master 分支 3. 提交代码 4. 新建 Pull Request