内部API接口
接口概述
本接口文档描述的是 是黑羽学院系统 前端 和 后端子系统之间的内部接口。
所有的HTTP请求响应消息,如果有消息体,一律为json格式。
所有的API响应消息,如果操作 不成功,返回消息体 格式如下
ret 不为 0 表示操作失败, msg 字段描述 API 操作失败的原因
登录
3种类型的账号:管理员、老师、学生, 均使用该接口进行登录。
前端发送的登录请求中包含账号、密码。
后端接收后,对账号密码的正确性进行校验。
HyLearn 系统使用session会话机制。
如果校验通过,服务端在响应消息头Set-Cookie 中存入sessionid ,该用户的后续请求头Cookie中必须携带sessionid。
请求
- 请求头
- 消息体
为json格式
action
字段值为 signin
表示登录
username
字段值为登录账号的用户名
password
字段值为登录账号的密码
响应
- 响应头
- 消息体
如果校验通过,返回消息如下
ret
为 0 表示登录成功
usertype
是用户类型。 1:超级管理员,8888:其他类型
userid
是用户在系统中的id
realname
是用户的姓名
登录成功后, 服务端在消息头Set-Cookie 中存入sessionid ,该用户的后续请求头Cookie中必须携带sessionid。
如果登录校验失败,返回失败的原因,示例如下
ret 不为 0 表示登录失败, msg字段描述登录失败的原因
登出
请求
- 请求头
- 消息体
为json格式
action
字段值为 signout
表示退出登录
响应
后端应该根据sessionid清除掉session,然后返回响应消息
- 响应头
- 消息体
账号管理
该API接口 用来 列出、添加、修改、删除系统中的账号。
发出账号管理的API 只能是管理员用户。后端要根据session校验。
账号管理的API 路径均为 /api/account
列出账号
用来列出系统中的账号信息。
请求
- 请求头
- url参数
参数名 | 示例 | 必要性 | 含义 |
---|---|---|---|
action | listbypage | 必填项 | 必须为 listbypage |
pagesize | 3 | 必填项 | 分页的 每页获取多少条记录 |
pagenum | 2 | 必填项 | 获取第几页的信息 |
keywords | 白月 黑 | 可选项 | 搜索关键字,如果提供,表示用户姓名中包含的关键字。 多个关键字以空格隔开,表示姓名中同时包含的关键字词 |
响应
后端返回列出结果
- 消息体
{
"ret": 0,
"items": [
{
"id": 4,
"username": "student-4",
"realname": "学生-4",
"desc": "学生-4",
"usertype": 8888
},
{
"id": 3,
"username": "student-3",
"realname": "学生-3",
"desc": "学生-3",
"usertype": 8888
},
{
"id": 2,
"username": "student-2",
"realname": "学生-2",
"desc": "学生-2",
"usertype": 8888
},
],
"total": 8,
"keywords": ""
}
ret 为 0 表示列出成功
total 为 8 表示系统中(不是当前页)总共有8个账号
items 数组 里面包含了当前页中的账号信息。
每个账号信息以如下格式存储
添加账号
用来添加系统中的账号信息。
请求
- 请求头
- 消息体
要添加的账号的具体信息,格式如下
{
"action": "addone",
"data": {
"realname" : "紫一元",
"username" : "ziyiyuan",
"password" : "111111",
"desc" : "白月黑羽的优秀学员",
"usergroup": [1,2],
"permission":[23,22,21]
}
}
其中
action
: 填写 addone, 表示 添加一个账号的操作
realname
: 用户的姓名
username
: 用户的登录名
password
: 用户的密码
desc
: 账号描述信息
usergroup
: 可选项,以数组的方式指定 该用户所属的用户组对应的id。 目前创作者 组id 固定为1, 创造管理 组id 固定为2
permission
: 可选项,以数组的方式指定 该用户所拥有权限 对应的id
响应
- 消息体
ret
为 0 表示添加成功
id
为添加账号的 id
修改账号
用来修改系统中的账号信息。
请求
- 请求头
- 消息体
要修改的账号的具体信息,格式如下
{
"action": "modifyone",
"id": 10,
"newdata": {
"realname": "紫一元2",
"username": "ziyiyuan2",
"password": "111111",
"desc": "白月黑羽网站的Python老师,创业公司CTO",
"usergroup": [2,1],
"permission":[23,22,21]
}
}
其中
action
: 填写 modifyone ,表示 修改一个账号的操作
id
: 要修改账号的 id
newdata
: 里面包含了要修改的信息
realname
: 用户的姓名修改为什么。如果此项不用修改,该字段不出现
username
: 用户的登录名修改为什么。如果此项不用修改,该字段不出现
password
: 用户的密码修改为什么。如果此项不用修改,该字段不出现
desc
: 账号的描述信息修改为什么。如果此项不用修改,该字段不出现
usergroup
: 以数组的方式指定 该用户所属的用户组对应的id。如果此项不用修改,该字段不出现
permission
: 以数组的方式指定 该用户所拥有权限 对应的id。如果此项不用修改,该字段不出现
响应
- 消息体
ret
为 0 表示修改成功
删除账号
用来删除系统中的账号信息。
请求
- 请求头
- 消息体
格式如下
其中
action
: 填写 deleteone ,表示 删除 一个账号的操作
id
: 要删除账号的 id
响应
- 消息体
ret
为 0 表示删除成功
课程管理
添加课程
用来添加课程
请求
- 请求头
- 消息体
要添加的课程的具体信息,格式如下
{
"action": "addone",
"data": {
"title": "自动化测试专题1",
"usage": 1,
"coverimage": "/upload/1_20210316174037_268543.png",
"content": "自动化测试专题1",
"videos": "[]",
"price": "0",
"categorytags": {
"selectedCategoryIds": [1,2],
"selectedTagIds": [3,4]
}
}
}
其中
action
: 填写 addone, 表示 添加的操作
data
为修改课程的信息,其中:
title
: 课程标题
usage
: 用途, 0:只在专题中 ; 1: 可以独立展示
coverimage
: 封面图片
content
: 课程内容
videos
: 课程包含的视频,数组格式
price
: 课程价格
categorytags
: 课程所属种类和标签
响应
- 消息体
ret
为 0 表示添加成功
id
为添加课程的 id
列出课程
该API接口 给普通用户用来 列出 系统中的课程。
请求
- 请求头
GET /api/lesson?action=listbypage&pagenum=1&pagesize=5&keywords=&withoutcontent=true&withuserstate=true&categorytags={"selectedCategoryIds":[52,59],"selectedTagIds":[34,21]}
Cookie: sessionid=<sessionid数值>
- url参数
参数名 | 示例 | 必要性 | 含义 |
---|---|---|---|
action | listbypage | 必填项 | 必须为 listbypage |
pagesize | 3 | 必填项 | 分页的 每页获取多少条记录 |
pagenum | 2 | 必填项 | 获取第几页的信息 |
keywords | 白月 黑 | 可选项 | 搜索关键字,如果提供,表示课程标题中包含的关键字。 多个关键字以空格隔开,表示同时包含的关键字词 |
withoutcontent | true | 可选项 | 如果出现,并且值为true 表示列出的课程信息不要包含课程content内容,这是为了节省不必要的流量 |
withuserstate | true | 可选项 | 如果出现,并且值为true 表示列出的课程信息 中,需要包括 当前用户对该产品的点赞,收藏、购买 状态 |
categorytags | {"selectedCategoryIds":[52,59,57],"selectedTagIds":[34,21]} | 可选项 | json格式,要求列出的课程 所关联的 种类 和 标签, 本例中表示只列出所属种类ID 为 52或者59其中之一,并且关联标签ID 为34或者21 |
响应
后端返回列出结果
- 消息体
{
"ret":0,
"total":321,
"keywords":"",
"items":[
{
"id":459,
"pubdate":"2020-12-21T00:00:00Z",
"author":32,
"title":"牛顿力学-5",
"status":1,
"coverimage":"/upload/niu342774234.png",
"thumbupcount":6727,
"favorcount":4969,
"price":"40",
"purchasecount":0,
"approved":1,
"reviewcomments":"",
"author_name":"teacher0030",
"userstate":""
},
{
"id":458,
"pubdate":"2020-12-21T00:00:00Z",
"author":32,
"title":"牛顿力学-4",
"status":1,
"coverimage":"/upload/niu142774234.png",
"thumbupcount":4794,
"favorcount":3044,
"price":"20",
"purchasecount":0,
"approved":1,
"reviewcomments":"",
"author_name":"teacher0030",
"userstate":""
},
{
"id":457,
"pubdate":"2020-12-21T00:00:00Z",
"author":32,
"title":"牛顿力学-3",
"status":1,
"coverimage":"/upload/niu312774234.png",
"thumbupcount":3155,
"favorcount":4556,
"price":"20",
"purchasecount":0,
"approved":1,
"reviewcomments":"",
"author_name":"teacher0030",
"userstate":""
},
{
"id":456,
"pubdate":"2020-12-21T00:00:00Z",
"author":32,
"title":"牛顿力学-2",
"status":1,
"coverimage":"/upload/niu382774234.png",
"thumbupcount":131,
"favorcount":1421,
"price":"40",
"purchasecount":0,
"approved":1,
"reviewcomments":"",
"author_name":"teacher0030",
"userstate":""
},
{
"id":455,
"pubdate":"2020-12-21T00:00:00Z",
"author":32,
"title":"牛顿力学-1",
"status":1,
"coverimage":"/upload/niu452774234.png",
"thumbupcount":8635,
"favorcount":217,
"price":"40",
"purchasecount":0,
"approved":1,
"reviewcomments":"",
"author_name":"teacher0030",
"userstate":"thumbup|favorite|purchased|"
}
]
}
ret 为 0 表示列出成功
total 为 321 表示系统中(不是当前页)总共有321个课程
items 数组 里面包含了当前页中的课程信息。
每个课程信息以如下格式存储,加上了注解
{
"id":455, # 课程ID
"pubdate":"2020-12-21T00:00:00Z", # 创建日期
"author":32, # 创作者 ID
"title":"牛顿力学-1", # 课程名称
"status":1,
"coverimage":"/upload/niu342774234.png", # 封面图片
"thumbupcount":8635, # 点赞数
"favorcount":217, # 收藏数
"price":"40", # 售价, 为 0 表示免费
"purchasecount":0, # 购买数量
"approved":1, # 批准状态 0: 待批准, 1: 批准, 2:待修改
"reviewcomments":"", # 审核意见
"author_name":"teacher0030", # 创作者姓名
"userstate":"thumbup|favorite|purchased|" # 当前用户对此课程使用信息
},
其中 userstate
表示 当前用户对此课程 是否 点赞、收藏、购买
如果点赞, userstate 值中包含 thumbup|
如果收藏, userstate 值中包含 favorite|
如果购买, userstate 值中包含 purchased|
修改课程
用来修改课程的信息。
该API 只能是课程的发布者 或者 管理员 调用
请求
- 请求头
- 消息体
修改的课程的API,格式如下
{
"action": "modifyone",
"id": 40,
"newdata": {
"title": "自动化测试专题1",
"usage": 1,
"coverimage": "/upload/1_20210316174037_268543.png",
"content": "自动化测试专题1",
"videos": "[]",
"price": "0",
"categorytags": {
"selectedCategoryIds": [],
"selectedTagIds": []
}
}
}
其中
action
: 填写 modifyone 表示 修改操作
id
为要修改课程的id
newdata
为修改课程的信息,其中每个属性的含义和添加课程相同。 如果该属性没有修改,就不需要出现。
响应
- 消息体
ret
为 0 表示修改成功
approved
为当前课程的审核状态 0: 待批准, 1: 批准, 2:待修改。 因为课程一旦修改后,就会处于代审核批准状态
删除课程
用来删除课程。该接口只能管理员或课程的创作者调用
请求
- 请求头
- 消息体
格式如下
其中
action
: 填写 deleteone ,表示 删除 一个 的操作
id
: 要删除课程的 id
响应
- 消息体
ret
为 0 表示删除成功
审核课程
用来审核课程,发布后,审核通过的课程,产品展示界面才能看不到。该接口只能是有审核权限的审核员调用
请求
- 请求头
- 消息体
格式如下
其中
action
: 填写 reviewresult ,表示 审核 的操作
id
: 要 撤回课程的 id
result
: 审核结果,只能填 pass 或者 modify, pass:通过, modify:不通过,打回修改
comments
: 审核意见,可以为空
响应
- 消息体
ret
为 0 表示 调用成功
撤回课程
用来撤回课程,撤回后的课程产品展示界面看不到。该接口只能课程的创作者调用
请求
- 请求头
- 消息体
格式如下
其中
action
: 填写 holdone ,表示 撤回 的操作
id
: 要 撤回课程的 id
响应
- 消息体
ret
为 0 表示 撤回成功
status
表示 当前的状态 1: 发布 2:草稿 3:封禁
封禁课程
用来封禁课程,封禁后的课程产品展示界面看不到。该接口只能管理员调用
请求
- 请求头
- 消息体
格式如下
其中
action
: 填写 banone ,表示 封禁 的操作
id
: 要 封禁课程的 id
响应
- 消息体
ret
为 0 表示 封禁成功
status
表示 当前的状态 1: 发布 2:草稿 3:封禁
批准课程
用来批准课程,批准后的课程产品展示界面可以看到。该接口只能管理员调用
被封禁状态的课程,必须要批准,产品展示界面才可以看到
请求
- 请求头
- 消息体
格式如下
其中
action
: 填写 publishone ,表示 批准发布 的操作
id
: 要 批准 课程的 id
响应
- 消息体
ret
为 0 表示 发布 成功
status
表示 当前的状态 1: 发布 2:草稿 3:封禁
专题管理
该API接口 给普通用户用来 列出 系统中的专题。
除了url path 改为 /api/course
,请求消息和响应消息 的 格式、意义 和 列出课程API 一致
列出专题
请求
- 请求头
GET /api/course?action=listbypage&pagenum=1&pagesize=5&keywords=&withoutcontent=true&withuserstate=true&categorytags={"selectedCategoryIds":[52,59],"selectedTagIds":[34,21]}
Cookie: sessionid=<sessionid数值>
- url参数
请求参数 格式、意义 和 列出课程API 一致
响应
后端返回列出结果,响应格式和 列出课程API 响应格式一致
- 消息体
{
"ret":0,
"items":[
{
"id":75,
"pubdate":"2021-01-18T07:49:46.068Z",
"author":1,
"title":"selenium自动化全套课程",
"status":1,
"coverimage":"/upload/1_20210118154852_7619.png",
"thumbupcount":0,
"favorcount":0,
"price":"1",
"purchasecount":1,
"approved":1,
"reviewcomments":null,
"author_name":"白月黑羽",
"userstate":""
},
{
"id":74,
"pubdate":"2020-12-21T00:00:00Z",
"author":32,
"title":"Python图形界面",
"status":1,
"coverimage":"/upload/1_20210118154852_3319.png",
"thumbupcount":3112,
"favorcount":489,
"price":"200",
"purchasecount":0,
"approved":1,
"reviewcomments":"",
"author_name":"teacher0030",
"userstate":""
}
],
"total":65,
"keywords":""
}
ret 为 0 表示列出成功
total 为 65 表示系统中(不是当前页)总共有65个专题
items 数组 里面包含了当前页中的专题信息。
每个专题信息的 存储格式和含义同上面的列出课程接口