FastAPI(六十三)实战开发《在线课程学习系统》梳理系统需要接口
针对上一篇FastAPI(六十二)实战开发《在线课程学习系统》需求分析需求的功能,我们对需要的接口进行梳理,大概的规划出来现有的接口,作为我们第一版的接口的设计出版,然后我们根据设计的接口。
2.1用户注册接口
路径:/user/register
请求方式:POST
请求格式:json
是否依赖登陆:否
参数:
| 参数名称 | 参数含义 | 参数是否必须 | 参数类型 |
|---|---|---|---|
| username | 用户名 8-16位 | 是 | str |
| password | 密码,长度8-16位,md5加密 | 是 | str |
| role | 类型,学生或者老师,默认:学生 | 是 | str |
| jobnum | 工号,8位数字 | 否 | int |
| studentnum | 学籍号,16位数字 | 否 | int |
| sex | 性别,男女。 | 是 | str |
| age | 年龄,必须大于18,小于65 | 是 | int |
接口返回:json
{
"code":200,
"data":'成功',
"message":"成功"
}
返回码说明
| 代码 | 含义 |
|---|---|
| 200 | 注册成功 |
| 100101 | 注册失败 |
| 100102 | 身份和对应号不匹配 |
| 100103 | 年纪大小不符合 |
| 100104 | 用户名重复 |
| 100105 | 密码加密失败 |
| 100106 | 用户名长度不符合 |
2.2登陆接口
路径:/user/login
请求方式:post
请求格式:json
是否依赖登陆:否
请求参数
| 字段 | 含义 | 是否必须 | 类型 |
|---|---|---|---|
| username | 用户名 | 是 | str |
| password | 密码 | 是 | str |
返回例子
{
"code":200,
"data":{
"token":""
},
"message":"成功"
}
返回状态码说明
| 代码 | 含义 |
|---|---|
| 200 | 成功 |
| 100201 | 登陆失败 |
| 100202 | 重复登陆 |
| 100203 | 产生token失败 |
| 100204 | 输入密码错误次数过多,账号暂时锁定,请30min再来登录 |
| 100205 | 用户不存在 |
| 100206 | 密码错误 |
2.3个人信息
路径:/user/info
请求方式:post
请求格式:json
请求参数:无
是否依赖登陆:是
返回格式:json
{
"code":200,
"data":{
},
"message":"成功"
}
返回状态码说明
| 代码 | 含义 |
|---|---|
| 200 | 成功 |
2.4 修改密码
路径:/user/changepassword
请求方式:post
请求格式:json
返回格式:json
是否依赖登陆:是
| 参数 | 说明 | 是否必须 | 类型 |
|---|---|---|---|
| oldpassword | 原密码 | 是 | str |
| newspassword | 新密码 | 是 | str |
返回示例
{
"code":200,
"data":'成功',
"message":"成功"
}
返回状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
| 100301 | 原密码校验失败 |
| 100302 | 密码保存失败 |
| 100303 | 新密码长度不匹配 |
| 100304 | 新旧密码不能一样 |
2.5 留言
路径:/user/addmessage
请求方式:post
请求格式:json
是否依赖登陆:是
请求参数:
| 参数 | 含义 | 是否必须 | 类型 |
|---|---|---|---|
| id | 用户id | 是 | int |
| message | 内容 | 是 | str |
返回格式:json
{
"code":200,
"data":{
},
"message":"成功"
}
返回状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
| 100501 | 自己不能给自己留言 |
| 100502 | 留言长度在5-500个字符长度 |
| 100503 | 留言用户不存在 |
2.6 查看留言
路径:/user/viewmessage
请求方式:get
请求格式:json
是否依赖登陆:是
请求参数:无
返回格式:json
{
"code":200,
"data":{
},
"message":"成功"
}
返回状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
2.7留言列表
路径:/user/messagelist
请求方式:get
请求格式:json
是否依赖登陆:是
请求参数:无
返回格式:json
{
"code":200,
"data":[
],
"message":"成功"
}
返回状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
2.8回复留言
路径:/user/rebackmessage/
请求方式:post
请求格式:json
是否依赖登陆:是
请求参数
| 参数 | 含义 | 是否必须 | 类型 |
|---|---|---|---|
| id | 留言的id | 是 | int |
| message | 内容 | 是 | str |
返回格式:json
{
"code":200,
"data":{},
"message":"成功"
}
返回状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
| 100801 | 回复留言失败 |
| 100802 | 回复留言内容不能为空 |
| 100803 | 回复内容应该在5-500字 |
| 100804 | 回复留言id不存在 |
2.9删除留言
路径:/user/deletemessage/{id}
请求方式:get
请求格式:json
是否依赖登陆:是
请求参数:
| 参数 | 含义 | 是否必须 | 类型 |
|---|---|---|---|
| id | 留言的id | 是 | int |
返回格式:json
{
"code":200,
"data":"ok",
"message":"成功"
}
返回状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
| 100901 | 删除留言不存在 |
| 100902 | 权限不足 |
2.10创建课程
路径:/course/create
请求方式:post
请求格式:json
是否依赖登陆:是
请求参数:
| 参数 | 含义 | 是否必须 | 类型 |
|---|---|---|---|
| name | 课程名称(长度2-50) | 是 | str |
| icon | 课程的icon | 否 | str |
| desc | 描述 | 否 | text |
| catalog | 目录 | 否 | json |
| onshelf | 是否上架(0上架,1下架) | 是 | int |
返回格式:json
{
"code":200,
"data":"ok",
"message":"成功"
}
状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
| 101002 | 课程名称不能重复 |
| 101003 | 课程创建失败 |
2.11课程详情
路径:/course/detail/{id}
请求方式:get
请求格式:json
是否依赖登陆:是
请求参数
| 参数 | 含义 | 是否必须 | 类型 |
|---|---|---|---|
| id | 课程id | 是 | int |
返回格式:json
{
"code":200,
"data":"ok",
"message":"成功"
}
状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
| 101101 | 课程不存在 |
2.12 课程编辑
路径:/course/edit
请求方式:put
请求格式:json
是否依赖登陆:是
请求参数
| 参数 | 含义 | 是否必须 | 类型 |
|---|---|---|---|
| name | 课程名称(长度2-50) | 是 | str |
| id | 课程id | 是 | int |
| icon | 课程icon | 否 | str |
| desc | 课程描述 | 否 | str |
| catalog | 课程目录 | 否 | json |
| onshelf | 是否上架(0上架,1下架) | 是 | int |
返回格式:json
{
"code":200,
"data":"ok",
"message":"成功"
}
状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
| 101201 | 课程id不存在 |
| 101202 | 权限不足 |
| 101203 | 课程名称不能重复 |
2.13 查看评论
路径:/course/viewcomments/{id}
请求方式:get
请求格式:无
是否依赖登陆:是
请求参数
| 参数 | 含义 | 是否必须 | 类型 |
|---|---|---|---|
| id | 课程id | 是 | int |
返回格式:json
{
"code":200,
"data":"ok",
"message":"成功"
}
状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
| 101301 | 课程id不存在 |
2.14评论
路径:/course/comments
请求方式:post
请求格式:json
是否依赖登陆:是
请求参数
| 参数 | 含义 | 是否必须 | 类型 |
|---|---|---|---|
| id | 课程id | 是 | int |
| content | 评论内容 | 是 | str |
返回格式:json
{
"code":200,
"data":"ok",
"message":"成功"
}
状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
| 101401 | 课程id不存在 |
| 101402 | 评论内容不能为空 |
| 101403 | 评论失败 |
| 101404 | 自己不能评论自己的课程 |
2.15 加入课程
路径:/course/add/{id}
请求方式:post
请求格式:json
是否依赖登陆:是
请求参数
| 参数 | 含义 | 是否必须 | 类型 |
|---|---|---|---|
| id | 课程id | 是 | int |
返回格式:json
{
"code":200,
"data":"ok",
"message":"成功"
}
状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
| 101501 | 课程id不存在 |
| 101502 | 课程不能重复加入 |
| 101503 | 自己不能加入自己的课程 |
2.16 退出课程
路径:/course/quit/{id}
请求方式:post
请求格式:json
是否依赖登陆:是
请求参数
| 参数 | 含义 | 是否必须 | 类型 |
|---|---|---|---|
| id | 课程id | 是 | int |
返回格式:json
{
"code":200,
"data":"ok",
"message":"成功"
}
状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
| 101601 | 课程id不存在 |
| 101602 | 课程不在自己列表 |
2.17 课程列表
路径:/course/list
请求方式:get
请求格式:json
是否依赖登陆:是
请求参数:无
返回格式:json
{
"code":200,
"data":"ok",
"message":"成功"
}
状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
2.18 课程列表(当前用户的课程)
路径:/course/courselist
请求方式:get
请求格式:json
是否依赖登陆:是
请求参数:
无
返回格式:json
{
"code":200,
"data":"ok",
"message":"成功"
}
状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
2.19 推荐课程列表
路径:/course/recommend
请求方式:get
请求格式:json
是否依赖登陆:是
请求参数:无
返回格式:json
{
"code":200,
"data":"ok",
"message":"成功"
}
状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
2.20 课程点赞
路径:/course/like/{id}
请求方式:get
请求格式:json
是否依赖登陆:是
请求参数
| 参数 | 含义 | 是否必须 | 类型 |
|---|---|---|---|
| id | 课程id | 是 | int |
返回格式:json
{
"code":200,
"data":"ok",
"message":"成功"
}
2.21 课程上架
路径:/course/onshelf/{id}
请求方式:get
请求格式:json
是否依赖登陆:是
请求参数
| 参数 | 含义 | 是否必须 | 类型 |
|---|---|---|---|
| id | 课程id | 是 | int |
返回格式:json
{
"code":200,
"data":"ok",
"message":"成功"
}
状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
| 102101 | 课程不存在 |
| 102102 | 课程已经上架 |
| 102103 | 自己只能上架自己的课程 |
| 102104 | 权限不足 |
2.22 课程下架
路径:/course/offshelf/{id}
请求方式:get
请求格式:json
是否依赖登陆:是
请求参数
| 参数 | 含义 | 是否必须 | 类型 |
|---|---|---|---|
| id | 课程id | 是 | int |
返回格式:json
{
"code":200,
"data":"ok",
"message":"成功"
}
状态码说明
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
| 102201 | 课程不存在 |
| 102202 | 课程已经下架 |
| 102203 | 自己只能下架自己的课程 |
| 102204 | 权限不足 |
对应的接口第一版本已经梳理完毕,下次,我们分享需要的数据库的设计。
后记
文章首发在公众号,欢迎关注。

FastAPI(六十三)实战开发《在线课程学习系统》梳理系统需要接口的更多相关文章
- FastAPI(六十二)实战开发《在线课程学习系统》需求分析
前言 基础的分享我们已经分享了六十篇,那么我们这次分享开始将用一系列的文章分享实战课程.我们分享的系统是在线学习系统.我们会分成不同的模块进行分享.我们的目的是带着大家去用fastapi去实战一次,开 ...
- FastAPI(六十九)实战开发《在线课程学习系统》接口开发--修改密码
之前我们分享了FastAPI(六十八)实战开发<在线课程学习系统>接口开发--用户 个人信息接口开发.这次我们去分享实战开发<在线课程学习系统>接口开发--修改密码 我们梳理一 ...
- FastAPI(六十八)实战开发《在线课程学习系统》接口开发--用户 个人信息接口开发
在之前的文章:FastAPI(六十七)实战开发<在线课程学习系统>接口开发--用户登陆接口开发,今天实战:用户 个人信息接口开发. 在开发个人信息接口的时候,我们要注意了,因为我们不一样的 ...
- FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发
接上一篇文章FastAPI(六十六)实战开发<在线课程学习系统>接口开发--用户注册接口开发.这次我们分享实际开发--用户登陆接口开发. 我们先来梳理下逻辑 1.查询用户是否存在2.校验密 ...
- FastAPI(七十三)实战开发《在线课程学习系统》接口开发-- 回复留言
之前文章分享FastAPI(七十二)实战开发<在线课程学习系统>接口开发-- 留言列表开发,这次我们分享如何回复留言 按照惯例,我们还是去分析这里面的逻辑. 1.判断用户是否登录 2.用户 ...
- FastAPI(七十四)实战开发《在线课程学习系统》接口开发-- 删除留言
之前文章FastAPI(七十三)实战开发<在线课程学习系统>接口开发-- 回复留言,那么我们这次分享删除留言接口的开发 可以对留言进行删除,这里的删除,我们使用的是逻辑的删除,不是物理删除 ...
- FastAPI(七十)实战开发《在线课程学习系统》接口开发--留言功能开发
在之前的文章:FastAPI(六十九)实战开发<在线课程学习系统>接口开发--修改密码,这次分享留言功能开发 我们能梳理下对应的逻辑 1.校验用户是否登录 2.校验留言的用户是否存在 3. ...
- FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 留言列表开发
之前我们分享了FastAPI(七十一)实战开发<在线课程学习系统>接口开发-- 查看留言,这次我们分享留言列表开发. 列表获取,也需要登录,根据登录用户来获取对应的留言.逻辑梳理如下. 1 ...
- FastAPI(七十一)实战开发《在线课程学习系统》接口开发-- 查看留言
之前FastAPI(七十)实战开发<在线课程学习系统>接口开发--留言功能开发分享了留言开发,这次我们分享查看留言 梳理这里的逻辑,这个接口要依赖登录. 1.判断用户是否登录 2.判断对应 ...
随机推荐
- 从零入门 Serverless | 在线应用的 Serverless 实践
作者 | 唐慧芬(黛忻) 阿里云产品专家 导读:毫无疑问,Serverless 能够在效率和成本上给用户带来巨大收益.那具体到落地又应该怎么做呢?本文就给大家详细解读 Serverless 的落地实践 ...
- 从零入门 Serverless | Serverless 应用如何管理日志 & 持久化数据
作者 | 竞霄 阿里巴巴开发工程师 本文整理自<Serverless 技术公开课>,关注"Serverless"公众号,回复"入门",即可获取 Se ...
- 纯前端H5小应用_localStorage存储
开发缘由[需求发现和分析] 想要送朋友一个礼物,但是想了想,街上买的东西,em~,我们这样的猿确实不会选礼物啊,由此就想利用自己手中的工具和知识做点有用的东西吧,抱枕是礼物,钢笔是礼物,电子产品也是礼 ...
- 模拟赛T2 交换 解题报告
模拟赛T2 交换 解题报告 题目大意: 给定一个序列和若干个区间,每次从区间中选择两个数修改使字典序最小. \(n,m\) 同阶 \(10^6\) 2.1 算法 1 按照题意模拟,枚举交换位置并比较. ...
- python收集参数与解包
收集任意数量的实参 def make_pizza(*toppings): """打印顾客点的所有配料""" print(toppings) ...
- 关于string转换为wstring问题
方法一:需要调用windows的api函数进行转换,在vs2017上试验转换成功 #ifdef _MSC_VER #include <Windows.h> #endif // _MSC_V ...
- wpa_supplicant启动出错rfkill: Cannot open RFKILL control device
在板子是调试网络,千辛万苦把wpa_supplicant及其依赖都移植编译进来了,在板子上调试启动的时候启动报错了 D/wpa_supplicant( 1152): wpa_supplicant v2 ...
- git commit--fatal: unable to auto-detect email address
git commit的时候报错 *** Please tell me who you are. Run git config --global user.email "you@example ...
- Vivado Synth/Place Faild但是没有给出error信息
最近遇到一个现象,以前可以编译通过的工程,修改之后发现Synthesis编译报错,而且没有给出error信息,以前也出现过无故place 失败但是没有给出error信息的现象,查看错误日志输出文件,出 ...
- poj 3020 Antenna Placement(二分图最大匹配)
题意: N行M列的矩阵,每个格子里不是 * 就是 O . * :是一个利益点. O:是一个空白点. 每次可以用一个圈覆盖相邻的两个*.(左右相邻或上下相邻). 问最少需要多少个圈可以覆盖所有的*. 思 ...