# server **Repository Path**: zcxsythenew/server ## Basic Information - **Project Name**: server - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-03-27 - **Last Updated**: 2021-06-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Augenblick (新) 后端服务器 应“快速开发”的实际要求,后端服务器将改变原有架构,来为快速完成开发任务提供条件。粗略描述如下: - 教师端:题目管理功能,通过架设 SFTP 文件服务器,直接上传文件夹解决,不再通过 HTTPS 解决。由于文件夹的结构(相比于关系型数据库)不适合于对内部的各种 Excel 表格提供完整的校验功能,**将不再在上传题目时校验数据的有效性、一致性等**。如果运行时题目数据出错,则返回 400 状态码。学生管理功能,仍然通过 HTTPS 和 MySQL 数据库实现,通过 RFC 6749 内描述的方式进行登录。 - 学生端:仍然通过 RFC 6749 内描述的方式进行注册及登录。学生访问课程时,访问的究竟是 M (男)的课程还是 F (女)的课程,由后端根据学生的注册信息指定。 ## 假数据服务器 此服务器将提供在后端服务器未完成开发时,可供前端进行开发的数据来源。假数据服务器不涉及任何数据库操作。 目前,假数据提供的 API 如下: ### 课程列表获取 `GET /course` 返回内容:[点击查看](http://zcxsythenew.xyz/course) ### 课程题目获取 `GET /course/:target/:instruction/:tour_id/:lesson_id/:activity/:exercise` 例如: `GET /course/english/chinese/1/2/narration/1` `tour_id`、`lesson_id`、`activity`、`exercise` 所代表的意义,请参考压缩文件中,`English(Br)` 下 `English(Br)(thru_RUSSIAN)_F.xlsx` 中的 A、B、D、E 列。 返回状态码:200 返回值:[查看上面例子的返回值](http://zcxsythenew.xyz/course/english/chinese/1/2/narration/1) 注:Narration 类型的返回值,`spec` 字段请参考 Narration.xlsx 文件,其它字段请参考 Image-index.xlsx 文件。 假数据约定: - 由于文件夹内 `acculturation`、`interaction`、`syntax` 的内容未指定,当 `activity` 指定为这三者之一时返回 404 状态码。 - `activity` 指定为 `narration`时,不论其它参数如何,均返回同一个数据。 - `activity` 指定为 `lexis` 时,返回的题目类型根据 `exercise` 的值,如下所述: ```text '1' -- A Given B Cloze '2' -- A Cloze B Given '3' -- A Given B Blank '4' -- Letter Number Match '5' -- Match Up Click '6' -- Multiple Choice '7' -- Unscramble 其它值 -- 404 状态码 ``` ### 提交答案 提交某一题目答案的 URL 与获取题目的 URL 相同,方法为 POST。 前端判断答案正确后,以 POST 方式提交**空请求体**即可。需要在 Header 部分附加 CSRF 信息,通过 CSRF 校验。 假数据约定:发起 POST 请求后,服务端一律返回 204 状态码。 ### 获取课程脚本 `GET /script/:target/:instruction` 例如: `GET /script/english/chinese` 返回状态码:200 返回数据:一个字符串,内有一个数字,表示 tour 的数目。[点击查看](http://zcxsythenew.xyz/script/British%20English/Russian) `GET /script/:target/:instruction/:tour` 例如: `GET /script/english/chinese/1` 返回状态码:200 返回数据:一个字符串,内有一个数字,表示 lesson 的数目。[点击查看](http://zcxsythenew.xyz/script/British%20English/Russian/1) `GET /script/:target/:instruction/:tour/:lesson` 例如: `GET /script/english/chinese/1/1` 返回状态码:200 返回数据:JSON 数组,表示当前课程包含的 Activity 及其相应数量。有顺序。[点击查看](http://zcxsythenew.xyz/script/British%20English/Russian/1/1) ### 获取图片 `GET /image/:id` 例如: `GET /image/00001` 返回状态码:200 或 304 返回数据:图片。[点击查看](http://zcxsythenew.xyz/image/00001) 图片 ID 的概念,在 Narration 部分会用到。 ### Font 获取 `GET /font/:language` 例如: `GET /font/english` 返回状态码:200 返回数据:[点击查看](http://zcxsythenew.xyz/font/MandarinPinyin) ### 进度获取 `GET /progress/:target/:instruction` 例如: `GET /progress/english/chinese` 返回状态码:200 返回数据:[点击查看](http://zcxsythenew.xyz/progress/english/chinese) 其中,`url` 字段表示当前进度的**下一道题目**的 URL。客户端可以(但不一定)使用这个字段,来做用户提交某道题后进入下一道题的跳转。 此字段也会用于复习题。 ### Audio 脚本获取 此部分文件的格式和用途暂未明朗。待定。