课表接口
课表接口为学生,老师和教室提供多种类型的课表数据接口,以满足不同应用的开发需要。
数据结构
以下课表API,返回的都是班级对象的列表,不是按时间纬度返回的。因为班级会有多个上课时间,客户端需要自己根据对象schedules字段,循环插入到周课表指定位置。
每个班级对象,包含以下主要字段:
| 字段名 | 类型 | 描述 | 示例 |
|---|---|---|---|
| id | integer | 班级ID | 123 |
| name | string | 课程名 | 语文必修1 |
| class_name | string | 班名 | 2班 |
| csin | string | 课程编号 | MA101 |
| teachers | array | 教师列表 | teachers[0].reflection.name表示教师名 |
| schedules | array | 上课时间 | schedules[].day 表示星期几, lesson表示第几节 |
| subject | object | 科目 | subject.name 表示科目名,比如数学 |
| classroom | object | 教室 | classroom.name 表示教室名 |
schedulesArray上课时间列表,包含的对象有以下字段:dayinteger表示星期几, 1-7之间(如果为0就忽略掉,说明这个课没有上课时间)lessoninteger第几节上课,1-N (如果为0就忽略掉,说明这个课没有上课时间)is_currentboolean是否当前正在上课,这个字段可能不存在,如果是true就可以高亮显示
teachersArray教师列表,每个教师对象有以下主要字段:namestring教师名usinstring教师工号- 字段和学生资料都一样,比如
avatar_url头像链接
日课表节次信息
如果指定了date日课表查询参数,班级对象里还包括当天上课节次的字段:
| 字段名 | 类型 | 描述 | 示例 |
|---|---|---|---|
| lesson | integer | 上课节次序号 1,2,3... | 2 |
| lesson_name | string | 节次名称 | 第2节,早读 |
| lesson_start_time | string | 开始上课时间 | 8:55 |
| lesson_start_timestamp | integer | 开始上课时间戳 | 1506314100 |
| lesson_end_time | string | 上课结束时间 | 8:55 |
| lesson_end_timestamp | integer | 上课结束时间戳 | 1506316800 |
| lesson_is_current | boolean | 是否当前正在上课 | false |
周课表节次信息
默认没有date参数时,返回一周的所有课表。需要另外请求 3. 周课表结构 的接口。
可用 API
1、学生课表
GET /api/v1/timetable/students/:id
如果要查询某一天的上课班级,请务必加上date参数,不传将返回本学期所有上课班级。
Parameters
| 参数名 | 类型 | 描述 |
|---|---|---|
| id | integer | 学生id |
| semester_id | integer | 学期ID,可省略,默认当前正在进行的学期 |
| date | string | 只看指定日期的课表,格式为YYYY-MM-DD,可以是字符串now,表示今天 |
Response 200
教学班列表,无分页,详见 https://open.seiue.com/docs/api-classes.html
2、教师课表
该 API 根据教师获取授课班级列表
GET /api/v1/timetable/teachers/:id
Parameters
| 参数名 | 类型 | 描述 |
|---|---|---|
| id | integer | 教室id |
| semester_id | integer | 学期ID,可省略,默认当前正在进行的学期 |
Response 200
教学班列表,无分页,详见 https://open.seiue.com/docs/api-classes.html
3、教室课表
该 API 根据教室获取班级列表
如果要查询某一天的上课班级,请务必加上date参数,不传将返回本学期所有上课班级。
GET /api/v1/timetable/classrooms/:id
Parameters
| 参数名 | 类型 | 描述 |
|---|---|---|
| id | integer | 教室id |
| semester_id | integer | 学期ID,可省略,默认当前正在进行的学期 |
| date | string | 只看指定日期的课表,格式为YYYY-MM-DD,可以是字符串now,表示今天 |
Response 200
教学班列表,无分页,详见 https://open.seiue.com/docs/api-classes.html
指定date参数时的响应示例:
[
{
"id": 152,
"school_id": 3,
"semester_id": 2,
"csin": "CGJH024",
"name": "航空航模",
"credit": 0,
"duration": 1,
"description": "",
"status": "init",
"start_at": 4,
"end_in": 22,
"week_type": 0,
"created_at": "2017-09-04 19:41:15",
"updated_at": "2017-09-04 19:41:15",
"capacity": 25,
"class_name": "选修",
"graduates_in": [
"2029",
"2026",
"2025"
],
"teachers": [
{
"created_at": "2017-09-04 19:41:15",
"reflection": {
"name": "张老师",
"usin": "T00001",
}
}
],
"subject": {
"id": 108,
"school_id": 3,
"name": "科技类"
},
"schedules": [
{
"day": 4,
"lesson": 2,
"location_id": 113
}
],
"attribute": {
"id": 94,
"school_id": 3,
"name": "城宫计划"
},
"classroom": {
"id": 113,
"school_id": 3,
"name": "1.1教室"
},
"lesson": 6,
"lesson_name": "第6节",
"lesson_start_time": "12:35",
"lesson_start_timestamp": 1506314100,
"lesson_end_time": "13:20",
"lesson_end_timestamp": 1506316800,
"lesson_is_current": false
},
]
4、周课表结构
获取每周有几天上课,每天有几节课,每节课的时间和名称分别是什么
GET /api/v1/timetable/structure
Parameters
| 参数名 | 类型 | 描述 |
|---|---|---|
| semester_id | integer | 学期ID,可省略,默认当前正在进行的学期 |
Response 200
结构对象,包含days天列表和lessons节次列表。
daysArray一周有哪几天daynumber周几 1-7,对应班级对象class.schedules[].day值labelstring显示名称,如周五is_currentboolean是否当天
lessonsArray一天有哪几节lessonnumber节次 1-N,对应班级对象class.schedules[].lesson值timestring上课时间,即开始时间和结束时间合并后的字符串08:30-09:15start_timestring上课时间08:30end_timestring下课时间09:15labelstring显示名称,如第3节,早读is_currentboolean是否当前上课时间
响应示例(当前是周二第1节,高亮显示):
{
"days": [
{
"day": 1,
"label": "周一",
"is_current": false
},
{
"day": 2,
"label": "周二",
"is_current": true
},
],
"lessons": [
{
"lesson": 1,
"time": "08:00-08:45",
"start_time": "08:00",
"end_time": "08:45",
"label": "第1节",
"is_current": true
},
{
"lesson": 2,
"time": "08:55-09:40",
"start_time": "08:55",
"end_time": "09:40",
"label": "第2节",
"is_current": false
},
]
}