- home.html
登录.onclick:
POST /signin
.Net 手机号密码登录
- register.html
-
提交.onclick:注册分两步:根据手机号密码获取用户ID和登录状态、初始化个人信息
POST /register
.Net 手机号密码注册
PUT /me
修改当前用户
-
- wechat.html
- 微信扫码
扫码后会跳转到/signin?state=%STATE%&code=%JSCODE%这里的“老师、学生”单选框并没有作用
- 微信扫码
- bindStudent.html
提交.onclick:
PUT /me
修改当前用户
- bindTeacher.html
提交.onclick:
PUT /me
- Teacher--基本信息:
window.onload:
GET /me
获取当前用户
- Teacher--基本信息修改
window.onload:
GET /me保存.onclick:
PUT /me
请求数据: 修改当前用户
- Teacher--教师主页(课程信息)
window.onload:
GET /course
获取与当前用户相关联的课程列表删除课程.onclick:
DELETE /course/{courseId}
按ID删除课程

修改课程.提交.onclick:
PUT /course/{courseId}
修改课程
- Teacher--新建课程
提交.onclick:
POST /course
创建课程
- 课程内页--首页:
window.onload:
GET /course/{courseId}
按ID获取课程
GET /course/{courseId}/class
按课程ID获取班级详情列表
GET /course/{courseId}/seminars
按课程ID获取讨论课详情列表
- 课程内页--创建班级:
window.onload:
GET /course/{courseId}
按ID获取课程加载侧边栏,这里可以用 JavaScript 在 localStorage 内缓存课程信息,免去每次访问的重复请求,以下不再包含对侧边栏课程详情的请求
提交.onclick:
POST /upload/classroster表单处理
- 课程内页--周三1-2节查看:
window.onload:
GET /class/{classId}
按ID获取班级详情
- 课程内页--周三1-2节修改:
提交.onclick:
PUT /class/{classId}
按ID修改班级
- 课程内页--创建讨论课:
提交.onclick:POST /course/{courseId}/seminar
在指定ID的课程创建讨论课
- 课程内页--讨论课1:
- 课程内页--讨论课2:
window.onload:
GET /seminar/{seminarId}
按ID获取讨论课
GET /seminar/{seminarId}/topic
按ID获取讨论课的话题删除讨论课.onclick:DELETE /seminar/{seminarId}
按ID删除讨论课删除话题.onclick:DELETE /topic/{topicId}
按ID删除话题
- 课程内页--讨论课2修改:
- 课程内页--新讨论课:
- 课程内页--创建话题:
提交.onclick:POST /seminar/{seminarId}/topic
请求数据:包含待新增信息的JSON或表单响应数据:HTTP 201{ "name": "领域模型与模块", "description": "Domain model与模块划分", "groupLimit": 5 }
{"id": 2}
- 课程内页--新讨论课查看话题(上课前):
- 课程内页--新讨论课查看话题(上课后):
- 话题A修改:
window.onload:
GET /topic/{topicId}
请求数据:无
响应数据:包含该话题的JSON{ "id": 257, "name": "Domain model与模块划分", "description": "xxx", "groupLimit": 5 }
提交.onclick:
PUT /topic/{topicId}
请求数据:包含待修改信息的JSON或表单响应:HTTP 204{ "name": "领域模型与模块", "description": "Domain model与模块划分", "groupLimit": 6 }
重置.onclick:GET topic/{topicId}
- 课程内页--评分:
window.onload:
GET /seminar/{seminarId}/group
获取所有小组
请求数据:无
响应数据:包含该讨论课的所有小组列表的JSON对每个小组,获取小组详情[ { "id": 257 }, { "id": 258 }, { "id": 259 }, { "id": 260 }, { "id": 261 }, { "id": 262 } ]
GET /group/{groupId}
请求数据:无
响应数据:包含小组ID对应的小组详情的JSON{ "id": 28, "leader": { "id": 8888, "name": "小红" }, "members": [ { "id": 5324, "name": "李四" }, { "id": 5678, "name": "王五" } ], "report": "/report/xxxxx.pdf" }
- 预览报告并打分:
window.onload:
GET /group/{groupId}
请求数据:无
响应数据:包含小组ID对应的小组详情的JSON{ "id": 28, "name": "1-A-1" "leader": { "id": 8888, "name": "小红" }, "members": [ { "id": 5324, "name": "李四" }, { "id": 5678, "name": "王五" } ], "report": "/report/xxxxx.pdf" }
GET /seminar/{seminarId}/topic
请求数据:无
响应数据:包含讨论课所有话题信息的JSON[ { "id": 257, "no": "A", "name": "Domain model与模块划分", "description": "XXXXXX" }, { "id": 258, "no": "B", "name": "Domain model与模块划分", "description": "XXXXXX" }, { "id": 259, "no": "C", "name": "Domain model与模块划分", "description": "XXXXXX" } ]
不知道是什么按钮界面组没画.onclick:PUT /group/{groupId}/grade
请求数据:包含此小组报告分的JSON响应:HTTP 204{"reportGrade": 4}
- 基本信息
window.onload:
GET /me
获取当前用户信息个人信息是否包含学院的问题目前界面组尚未回应
- 基本信息修改
- 学生主页(课程信息)
window.onload:
GET /class
获取与学生相关的班级信息退选课程.onclick:
DELETE /class/{classId}/student/{studentId}
学生按ID取消选择班级
- 选择课程(未查询)
- 选择课程(查询后)
window.onload:
GET /class?courseName=ooad&teacher=邱明
获取符合查询条件的班级信息选择课程.onclick:POST /class/{classId}/student
学生按ID选择班级
- 课程内页-首页
window.onload:
GET /course/{courseId}
请求数据:无
响应数据:{ "id": 222, "name": "面向对象的分析与设计", "discription": "这个人很懒,什么都没有留下" }
GET /course/{courseId}/seminar
请求数据:无
响应数据:[ { "id": 29, "name": "界面原型设计", "description": "界面原型设计", "groupingMethod": "fixed", "startTime": "2017-09-25", "endTime": "2017-10-09" }, { "id": 32, "name": "概要设计", "description": "模型层与数据库设计", "groupingMethod": "fixed", "startTime": "2017-10-10", "endTime": "2017-10-24" } ]
- 讨论课(随机分组)
window.onload:
GET /seminar/{seminarId}
按ID获取讨论课
GET /seminar/{seminarId}/group/my
按讨论课ID获取学生所在小组详情
- 讨论课(固定分组)
window.onload:
GET /seminar/{seminarId}
按ID获取讨论课

- 用表单实现
- 新查看话题(固定)
- 班级小组(固定分组名单)
window.onload:GET /class/{classId}/classgroup
请求数据:无
响应数据:包含该组所有学生信息的JSON{ "leader": { "id": 2757, "name": "张三", "number": "23320152202333" }, "members": [ { "id": 2756, "name": "李四", "number": "23320152202443" }, { "id": 2777, "name": "王五", "number": "23320152202433" } ] }
- 固定分组2
window.onload:GET /class/{classId}/classgroup查询.onclick:
GET /class/{classId}/student?nameBeginWith=张
请求数据:无
响应数据:得到学生列表[ { "id": 233, "name": "张三", "number": 24320152202333 }, { "id": 245, "name": "张八", "number": 24320152202334 } ]
确定.onclick:
PUT /class/{classId}/classgroup/add
添加班级小组成员
- 固定分组3
见 9 - 查看分数
window.onload:
GET /course/{courseId}/grade
按课程ID获取学生的所有讨论课成绩
- LoginUI
- 点击登录按钮:
POST /signin
请求数据:响应数据:{ "phone":"18911114514", "password":"qwer2345!" }
{ "id": 3486, "type": "student", "name": "张三", "jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjaWQiOiJPQTAwMDEiLCJpYXQiOjE0ODI2NTcyODQyMjF9.TeJpy936w610Vrrm+c3+RXouCA9k1AX0Bk8qURkYkdo=" }
- 点击登录按钮:
- TeacherBindingUI
- 绑定账号:
PUT /me
请求数据:响应:HTTP 204{ "number": "23320152202333", "name":"张三", "school": { "id": 32, "name": "厦门大学" } }
- 绑定账号:
- StudentBindingUI
- 绑定账号:
PUT /me
请求数据:响应:HTTP 204{ "number": "23320152202333", "name":"张三", "school": { "id": 32, "name": "厦门大学" } }
- 绑定账号:
- RegistUI
- .NET手机号密码注册:
POST /register
请求数据:响应数据:HTTP 200{ "phone":"18811114514", "password":"qwer2345!" }
{ "id": 3486, "type": "unbinded", "name": "", "jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjaWQiOiJPQTAwMDEiLCJpYXQiOjE0ODI2NTcyODQyMjF9.TeJpy936w610Vrrm+c3+RXouCA9k1AX0Bk8qURkYkdo=" }
RegistUI 应为 RegisterUI
- .NET手机号密码注册:
- ChooseCharacter
- 选择身份
PUT /me
请求数据:响应:HTTP 204{ "type":"student" }
- 选择身份
- Teacher_MainUI:
- 获取:
上:GET /me
请求数据:无
响应数据:包含教师账号信息的JSON,如下:{ "id": 3486, "type": "teacher", "name": "张三", "number": "24321432534", "phone": "18159215806", "email": "23320152202333@stu.xmu.edu.cn", "gender": "male", "school": { "id": 32, "name": "厦门大学" }, "title": "教授", "avatar": "/avatar/3486.png" }
GET /course
请求数据:无
响应数据:包括与该教师关联的所有课程名称,如[{"id": 1, "name": "J2EE"}, {"id": 2, "name": "OOAD"}, {"id": 3, "name": "操作系统"}, {"id": 4, "name": "数据仓库"}]
- 获取:
- CheckTeacherInfoUI:
- 获取:
GET /me
请求数据:无
响应数据:包含教师基本信息的JSON,如{ "id": 3486, "type": "teacher", "name": "张三", "number": "24321432534", "phone": "18159215806", "email": "23320152202333@stu.xmu.edu.cn", "gender": "male", "school": { "id": 32, "name": "厦门大学" }, "title": "教授", "avatar": "/avatar/3486.png" }
- 点击“点击头像修改”:
POST /upload/avatar
请求数据:头像图片文件
响应数据:{ "url": "/avatar/3486.png" }
PUT /me
请求数据:响应数据:HTTP 204{"avatar": "/avatar/3486.png"}
- 点击“解绑”按钮(J2EE):
PUT /me
请求数据:响应数据:HTTP 204{"unionID": ""}
- 点击“解绑账号”按钮(.NET):
PUT /me
请求数据:响应数据:HTTP 204{"phone": ""}
- 获取:
- ClassManage:
- 获取正在进行的讨论课
GET /course/{courseId}/seminar/current
获取课程正在进行的讨论课
- 获取正在进行的讨论课
- FixedRollStartCallUI:
- 签到状况:
GET /seminar/{seminarId}/class/{classId}/attendance
按ID获取讨论课班级签到、分组状态 - 开始签到:
PUT /class/{classId}
按ID修改班级
请求数据:{"calling": {seminarId}}
- 签到状况:
- FixedRollCallUI:
- 结束签到:
PUT /class/{classId}
按ID修改班级
请求数据:{"calling": -1}
- 结束签到:
- FixedEndRollCallUI:
无 - RollCallListUI
- 获取签到中状态:
/class/{classId}/attendance?showPresent=true
请求数据: 无
响应数据:
{ "numPresent": 4, "present": [ { "id": 2357, "name": "张三" }, { "id": 8232, "name": "李四" } ] }
- 获取签到中状态:
- FixedRollCallEndUI1
- 获取签到结束状态:
/class/{classId}/attendance?showPresent=true&showLate=true&showAbsent=true
请求数据: 无
响应数据:
{ "numPresent": 4, "present": [ { "id": 2357, "name": "张三" }, { "id": 8232, "name": "李四" } ], "late": [ { "id": 3412, "name": "王五" }, { "id": 5234, "name": "王七九" } ], "absent": [ { "id": 34, "name": "张六" } ] }
- 获取签到结束状态:
- FixedGroupInfoUI
- 查看分组:
GET /seminar/{seminarId}/group?classId={classId}
按讨论课ID查找小组
对于展开的小组:
GET /group/{groupId}
按小组ID获取小组详情
- 查看分组:
- GroupInfoUI:
- 查看分组同上
- 查看迟到签到学生
GET /seminar/{seminarId}/class/{classId}/attandance/late
按ID获取讨论课班级迟到签到名单 - 点击+号:
PUT /group/{groupId}
添加成员
- GroupInfoUI2:
同上 - RandomRollStartCallUI
见4 - RandomRollCallUI
见5 - RandomEndRollCallUI
见6 - RollCallListUI
见7 - ChooseSchool1/ChooseSchool2
无 - ChooseSchool3/ChooseSchool4
- 获取:
GET /school?city=厦门
请求数据:无
响应数据:符合查询条件的学校列表[ { "id": 32, "name": "厦门大学", "province": "福建", "city": "厦门" }, { "id": 37, "name": "厦门理工学院", "province": "福建", "city": "厦门" } ]
- 选中“厦门大学”:
PUT /me
请求数据:响应数据:HTTP 204{ "school": { "id": 32, "name": "厦门大学", "province": "福建", "city": "厦门" } }
- 获取:
- ChooseSchoolNoSchoolForTeacher1-2
- 查询获取:
GET /school?city=厦门
请求数据:无
响应数据:符合查询条件的学校列表[ { "id": 32, "name": "厦门大学", "province": "福建", "city": "厦门" }, { "id": 37, "name": "厦门理工学院", "province": "福建", "city": "厦门" }, { "id": 38, "name": "厦门城市职业学院", "province": "福建", "city": "厦门" } ]
- 查询获取:
- CreateSchoolUI
- 点击“创建”按钮:
POST /school
请求数据:响应数据:HTTP 201{ "name": "厦门市人民公园", "province": "福建", "city": "厦门" }
{"id":38} //返回学校的ID
- 点击“创建”按钮:
- Teacher_MainUI2:
- 获取:
GET /course
请求数据:无
响应数据:包括与该教师关联的所有课程名称,如[{"id": 1, "name": "J2EE"}, {"id": 2, "name": "OOAD"}, {"id": 3, "name": "操作系统"}, {"id": 4, "name": "数据仓库"}]
- 获取:
- Student_MainUI

GET /class
获取与当前用户相关的班级列表 - CheckStudentInfoUI:
- 获取:
GET /me
请求数据:无
响应数据:包含学生基本信息{ "id": 3486, "type": "student", "name": "张三", "number": "23320152202333", "phone": "18911114514", "email": "23320152202333@stu.xmu.edu.cn", "gender": "male", "school": { "id": 32, "name": "厦门大学" }, "title": "", "avatar": "/avatar/3486.png" }
- 点击“点击头像修改”:
POST /upload/avatar
请求数据:头像图片文件
响应数据:{ "url": "/avatar/3486.png" }
PUT /me
请求数据:响应数据:HTTP 204{"avatar": "/avatar/3486.png"}
- 点击“解绑”按钮(J2EE):
PUT /me
请求数据:响应数据:HTTP 204{"unionID": ""}
- 点击“解绑账号”按钮(.NET):
PUT /me
请求数据:响应数据:HTTP 204{"phone": ""}
- 获取:
- CourseUI

GET /course/{courseId}/seminar?embedGrade=true
按课程ID获取讨论课详情列表 - CourseInfoUI

GET /course/{courseId}
请求数据:无
响应数据:课程信息{ "id": 23, "name": "OOAD", "description": "面向对象分析与设计", "teacherName": "邱明", "teacherEmail": "mingqiu@xmu.edu.cn" }
- SeminarFixedGroupNoSelection/SeminarRandomGroupNoSelection

GET /seminar/{seminarId}/my
按ID获取与学生有关的讨论课信息 - 已完成分组(FixedGroupLeaderUI、FixedGroupMemberUI、FixedGroupNoLeaderUI)
- 获得分组信息:
GET /seminar/{seminarId}/group/my
按讨论课ID获取学生所在小组详情 - 队长辞职:
PUT /group/{groupID}/resign
队长辞职 - 成为队长:
PUT /group/{groupID}/assign
成为队长
- 获得分组信息:
- 选题(FixedGroupChooseTopicUI1、FixedGroupChooseTopicUI2)
- 获得所有话题
GET /seminar/{seminarId}/topic
按ID获取讨论课的话题

- 选择话题
POST /group/{groupId}/topic
小组按ID选择话题
- 获得所有话题
- 打分(GradePresentationUI、GradePresentationEndUI)
- 得到可以打分的小组
GET /seminar/{seminarId}/group?gradeable={true}
按讨论课ID查找小组 - 打分
PUT /group/{groupId}/grade/presentation/{studentId}
提交对其他小组的打分
- 得到可以打分的小组
- RandomGroupUI:

GET /seminar/{seminarId}/group?include={studentId}
请求数据:无
响应数据:学生所在的组的ID[{ "id": 28 }]
GET /group/{groupId}?embedTopics=true
请求数据:无
响应数据:小组详情{ "id": 28, "leader": { "id": 8888, "name": "张三" }, "members": [ { "id": 5324, "name": "李四" }, { "id": 5678, "name": "王五" } ], "topics": [ { "id": 257, "name": "领域模型与模块" } ], "report": "" }
PUT /group/{groupId}
请求数据:固定格式,即更改自己的角色为队长响应数据:HTTP 204{ "id": 29, "leader": { "id": 1, "name": "张二", "number": "24320162093849" }, "members": [ { "id": 230, "name": "李四", "number": "24320152202978" }, { "id": 2908, "name": "李二狗", "number": "24320152202998" } ], "topics": [ { "id": 10, "name": "领域模型" } ] }
- RandomGroupChoosetopic:
同 4 - RollCallUI:

GET /seminar/{seminarId}/detail
按ID获取讨论课详情
PUT /class/{classId}/attendance/{studentId}
请求数据:GPS位置响应数据:HTTP 204{ "longitude": 118.1132721, "latitude": 24.4307197, "elevation": 18.42 }