集中管理项目前后端API

WuXinyu e1dcd979d2 新增 review api 7 lat temu
assignment 79dc36bbe1 zys_test 7 lat temu
course 26a35c955e [新增] 查看课程详情 7 lat temu
exam aa263dedec [新增]考试系统api 7 lat temu
problem 2b4ab92a92 [修改]完善题目模块API 7 lat temu
review e1dcd979d2 新增 review api 7 lat temu
user 26a35c955e [新增] 查看课程详情 7 lat temu
.gitignore e1dcd979d2 新增 review api 7 lat temu
README.md 13286b1451 新增数据定义规范 7 lat temu
prefix.md aa263dedec [新增]考试系统api 7 lat temu

README.md

API-DOC

集中前后端 api

维护成员须知

文件夹管理须知

  1. 每个后端负责人创建并维护自己的文件夹
  2. 每个前端负责人协助维护各自负责的文件夹

文件结构管理须知

每个小组文件夹下 建议

  1. README 声明负责人
  2. api 文件夹 (用于存放所有 api)
  3. serializer 文件夹 (用于存放所有 api 中提到的对象 细则)

example:

user
├── README.md
├── api
│   └── User-用户.md
└── serializer
    └── UserSerializer.md

api 规范

前缀与规范

  1. 所有后端 api 务必至少添加前缀:/api
  2. restful 规范, 以数据为中心,每个数据 务必 返回 id
  3. 所有返回值均为 对象禁止 使用 bool string array等类型作为json返回值

数据定义

  1. serializer 中说明数据格式

api 文件命名

[模块英文命名]-[解释].md

example: User-用户.md

api 文件内容结构

# 命名

> url 前缀:**user**
>
> 示例:**https://xxxxxxxxx/api/user/xxxx**

##  请求名称

⬇️ 为路径参数格式 :userId 表示变量 

```http
post /:userId
```

### Parameters

⬇️ 为 post body 中的参数格式

```json
{
  "nickname": "nickname",
  "avatar": "xxxxxxxxxx",
  "bio": "小白白白白白白白白白白白"
}
```

⬇️ 为问号传参格式 example: user?userId=1

| Name   | Type   | Description       |
| ------ | ------ | ----------------- |
| userId | number | 查看用户的所有tag |


### Response

```json
{
  "data": UserSerializer
}
```

see [UserSerializer](./user/serializer/UserSerializer.md)

## 请求名称

etc...

serializer文件结构

example

# UserSerializer

用户的基本信息

## Attributes

- id : **Number** - 用户 id
- role : **String** - 身份类型 [ STUDENT - 学生用户, TEACHER - 教师用户]
- username : **String** - 用户名
- nickname : **String** - 昵称
- bio : **String **- 用户自我描述
- avatar : **String** - 头像 URL
- createdAt : **String** - 创建时间
- updatedAt : **String** - 更新时间