# 实验室管理系统后台 **Repository Path**: uniqueDSZ/labManager_back ## Basic Information - **Project Name**: 实验室管理系统后台 - **Description**: 实验室管理系统后台 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2017-09-20 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 实验室管理系统接口文档 | | 实验室管理系统 | | --- | | 文件状态[√] 草稿[ ] 正式发布[] 修改 | 文档标识 | 接口文档 | | --- | --- | --- | | 当前版本 | v0.1 | | --- | --- | | 文档负责人 | 汤泽川 | | --- | --- | | 完成日期 | | | --- | --- | | 草稿 | 创建人 | 汤泽川 | | --- | --- | --- | | | | | | --- | --- | --- | | | | | | --- | --- | --- | | | | | | --- | --- | --- | 序号 | 版本 | 操作说明 | 操作人 | 日期 | 备注 | | --- | --- | --- | --- | --- | --- | | 1 | 0.1 | 文档创建 | 汤泽川 | 2017-10-10 | | | 2 | 0.1 | 登陆、注册 | 汤泽川 | 2017-10-11 | | | 3 | 0.1 | 注销 | 汤泽川 | 2017-10-12 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 目录 1 接口说明 4 1.1 接口说明 4 1.2 系统参数 4 1.3 数据签名 4 1.4 调用示例 5 1、输入参数为 5 4、生成签名 sign 5 5、拼装API请求 5 1.5 注意事项 6 1.6 响应状态 6 **API统一约定编码** : 6 1.7 响应参数约定格式 6 2 账户系统 7 2.1 用户注册 7 2.1.1 接口说明 7 2.1.2 服务接口 7 2.1.3 请求参数 7 2.1.4 响应参数 7 2.1.5 请求响应示例 7 2.2 账户登录 8 2.2.1 接口说明 8 2.2.2 服务接口 8 2.2.3 请求参数 8 2.2.4 响应参数 8 2.2.5 请求响应示例 9 2.3 账户注销 9 2.3.1 接口说明 9 2.3.2 服务接口 9 2.2.3 请求参数 9 2.3.4 响应参数 9 2.3.5 请求响应示例 10 ## 1 接口说明 ## **1.1 接口说明** 网络协议:HTTP 传输方式:POST 数据格式:仅支持json 字符编码:统一采用UTF-8字符编码 **1、http 网关** 正式环境:http://tzcccy.cn/8080/ ## **1.2 系统参数** | **参数名** | **类型** | **必选** | **参数含义** | **备注** | | --- | --- | --- | --- | --- | | timestamp | string | 是 | 时间戳,格式为yyyy-mm-dd HH:mm:ss,例如:2013-05-06 13:52:03。API服务端允许客户端请求时间误差为10分钟。记录请求时间 | | | sign | string | 是 | 对 API 调用参数(除sign外)进行 md5 加密获得。获取方法参考如下1.3章节数据签名 | 暂时省略该值 | | encrypt\_method | string | 是 | 参数的加密方法选择,可选值是:md5 | | | session | string | 否 | 1、通过授权得到的Access Token值。2、是否传人该值,根据调用的API 判断。API文档上API用户授权类型 标识为"需要"的,调用时该字段必传;标识为"不需要"的,该值可不传人。 | | 调用API ,必须传入系统参数和应用参数。系统参数详细介绍如下;应用参数则根据不同API 具体入参,更多请参考详细接口描述。 ## **1.3** ** 数据签名** ** ** 调用API 时需要对请求参数进行签名验证,服务器也会对该请求参数进行验证是否合法的。方法如下: 根据参数名称(除签名和图片)将所有请求参数按照字母先后顺序排序:key + value .... key + value 例如:将foo=1,bar=2,baz=3 排序为bar=2,baz=3,foo=1,参数名和参数值链接后,得到拼装字符串bar2baz3foo1 系统支持MD5 md5:进行md5加密后,再转化成大写,格式是: md5(key1value1key2value2...) 注: JAVA中MD5是对字节数组加密,加密结果是16字节,我们需要的是32位的大写字符串,图片参数不用加入签名中测试 ## **1.4 调用示例** ** ** 调用API: ,应用参数fields 返回nick ,使用系统默认MD5加密,因为各语言语法不一致,以下实例只体现逻辑。为便于说明,假设 session 值为 test 。 # 1、输入参数为 timestamp=2013-05-06 13:52:03 fields=nick sign\_method=md5 session=test 2、按首字母升序排列 fields=nick session=test sign\_method=md5 timestamp=2013-05-06 13:52:03 3、连接字符串 连接参数名与参数值,并在首尾加上secret,如下: fieldsnicksessiontestsign\_methodmd5timestamp2013-05-06 13:52:03 # 4、生成签名 sign 32位大写MD5值->F557DF82B27A3B267BEC1F13656F4FB1 # 5、拼装API请求 将所有参数值转换为UTF-8编码,然后拼装,通过浏览器访问该地址,即成功调用一次接口,如下: http://tzcccy.cn/8080/LabManager?sign= F557DF82B27A3B267BEC1F13656F4FB1&timestamp=2013-05-06+13%3A52% 3A03&session=test&fields=nick ## **1.5 注意事项** ** ** 1、所有的请求和响应数据编码皆为utf-8格式,url里的所有参数值请做urlencode编码。如果请求的Content-Type是 application/x-www-form-urlencoded, http body里的所有参数值也做urlencode编码;如果是multipart/form-data格式,每个表单字段的参数值无需编码,但每个表单字段的charset部分需要指定为utf-8 2、API建议用post请求确保数据传输的安全可靠性 ## **1.6 响应状态** 接口响应状态分为统一约定编码和自定义编码,其中API自定义编码:为返回状态编码大于0时均为接口自定义编码,详情查看具体接口定义。 # **API统一约定编码** : 0:成功 -1:请求数据错误 -2:服务维护中 -3:用户无权限访问 -4:访问过于频繁 -5:缺少必选参数 -6:用户登录失效 -7:文件上传大小受限 -8:文件格式不正确 -100 密码错误 -101 密码为空 ## 1.7 响应参数约定格式 响应参数约定状态格式为 | **参数名** | **类型** | **必选** | **参数含义** | **备注** | | --- | --- | --- | --- | --- | | status | int | 是 | 状态描述 | | | message | string(32) | 否 | 返回的信息 | | | data | string | 是 | 返回的数据 | | 所有的请求返回的数据都放在data里面,返回给客户端。 ## 2 账户系统 ## 2.1 用户注册 ### 2.1.1 接口说明 用户注册实验室管理系统,无须登录 ### 2.1.2 服务接口 **LabManager.account.register** ### 2.1.3 请求参数 | **参数名** | **类型** | **必选** | **参数含义** | **备注** | | --- | --- | --- | --- | --- | | username | string(20) | 是 | 用户学/工号 | | | password | string(20) | 是 | 明文密码 | | | labid | int | 否 | 所属实验室id | 用户注册时必选账户属于哪个实验室(暂时省略,但该参数后面会用) | ### 2.1.4 响应参数 | **参数名** | **类型** | **必选** | **参数含义** | **备注** | | --- | --- | --- | --- | --- | | status | int | 是 | 1:用户已注册2:用户名不合法3:用户密码不合法4:用户类型选择错误5:所选实验室没有开放注册 | | ### 2.1.5 请求响应示例 请求参数: { "timestamp":"2017-10-10 12:52:03", "encrypt\_method":"md5", "username":"5120150000", "password":"123456", "labid":"1", "sign":"08027D30280257FB46EA71D3412473C6" } 响应参数: { "ststus":0, "message":"注册成功!", "data":null } ## 2.2 账户登录 ### 2.2.1 接口说明 用户登录实验室管理系统,无须session ### 2.2.2 服务接口 **LabManager.account.login** ### 2.2.3 请求参数 | **参数名** | **类型** | **必选** | **参数含义** | **备注** | | --- | --- | --- | --- | --- | | username | string(20) | 是 | 账户 | 用户学/工号 | | password | string(32) | 是 | 密码 | 32位大写的md5加密密文 | ### 2.2.4 响应参数 | **参数名** | **类型** | **必选** | **参数含义** | **备注** | | --- | --- | --- | --- | --- | | status | int | 是 | 1:账户尚未注册2:账户密码错误3:账户禁止登陆 | | | session | String | 是 | 首次登录返回的用户后期长期登录凭证 | 响应状态码为0时返回 | | expires\_in | int | 是 | session的过期时间"1507730400" | 响应状态码为0时返回 | ### 2.2.5 请求响应示例 请求参数: 响应参数: ## 2.3 账户注销 ### 2.3.1 接口说明 用户退出登陆,退出登录后,原有session将失效 ### 2.3.2 服务接口 **LabManager.account.logout** ### 2.2.3 请求参数 | **参数名** | **类型** | **必选** | **参数含义** | **备注** | | --- | --- | --- | --- | --- | | username | string(20) | 是 | 账户 | 用户学/工号 | | session | string(20) | 是 | 密码 | 用户登陆的session | ### 2.3.4 响应参数 | **参数名** | **类型** | **必选** | **参数含义** | **备注** | | --- | --- | --- | --- | --- | | status | int | 是 | 1:注销失败2:要注销的用户当前已不在线 | | ### 2.3.5 请求响应示例 请求参数: 响应参数: