![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
fastapi
文章平均质量分 51
一起学python吧
你学废了吗
展开
-
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
case只是列举了一部分,当然还要补充很多,但是这里最重要的case基本已经覆盖了,注册学生和老师,都要用学号和工号,重复数据不能添加。完整的接口已经开发完成了,那么我们需要对接口进行但愿测试,如何做呢,本文就带着大家去实现下。这里我只是展示了 一些主要的case,最容易出问题的case。我们可以根据这些已知的去设计我们的用例。我们可以先来看下,我们注册的接口的相关的文章,回忆下注册接口的代码。学生有学号,有长度要求,老师是工号有长度要求,且是纯数字。我们按照这个逻辑,去设计下,我们的测试用例。原创 2024-07-26 11:38:49 · 208 阅读 · 0 评论 -
FastAPI(八十二)实战开发《在线课程学习系统》接口开发-- 课程上架下架
源码见:"原创 2024-07-26 10:25:58 · 346 阅读 · 0 评论 -
FastAPI(八十一)实战开发《在线课程学习系统》接口开发-- 推荐课程列表与课程点赞
源码见:"原创 2024-07-26 10:07:01 · 337 阅读 · 0 评论 -
FastAPI(八十)实战开发《在线课程学习系统》接口开发-- 课程列表
源码见:"原创 2024-07-25 17:20:21 · 494 阅读 · 0 评论 -
FastAPI(七十九)实战开发《在线课程学习系统》接口开发-- 加入课程和退出课程
源码见:"原创 2024-07-25 16:43:51 · 518 阅读 · 0 评论 -
FastAPI(七十八)实战开发《在线课程学习系统》接口开发-- 评论
3.如果是回复,查看回复是否存在。首先新增pydantic模型。最后,实现接口api。原创 2024-07-25 15:47:55 · 427 阅读 · 0 评论 -
FastAPI(七十七)实战开发《在线课程学习系统》接口开发-- 课程编辑和查看评论
源码见:"原创 2024-07-25 14:53:50 · 498 阅读 · 0 评论 -
FastAPI(七十六)实战开发《在线课程学习系统》接口开发-- 课程详情
首先,我们去设计对应的pydantic类,course_schema.py。以上就是我们的课程详情接口,等评论接口开发好后回头再测试一下该接口。下面是具体逻辑:course_method.py。这个接口用户可以不登录,因为我们的课程随意浏览。最后实现我们的接口api,course.py。1.根据课程id判断课程是否存在。2.课程需要返回课程的详情。那么我们梳理下这里的逻辑。原创 2024-07-25 11:11:54 · 417 阅读 · 0 评论 -
FastAPI(七十五)实战开发《在线课程学习系统》接口开发-- 创建课程
首先,创建课程的pydantic参数类,同样的我们新建一个course_schema.py来单独管理。上次我们分享了,FastAPI(七十四)实战开发《在线课程学习系统》接口开发-- 删除留言。接下来,我们创建 course_method.py,在这里我们实现有关课程的所有逻辑。最后,我们在新建course.py,在其中实现接口api。我们在routers创建course.py。从本篇文章开始,我们分享课程相关的api。课程我们也需要单独创建一个新的路由来管理。接下来,我们看下如何实现创建课程?原创 2024-07-25 10:33:55 · 432 阅读 · 0 评论 -
FastAPI(七十四)实战开发《在线课程学习系统》接口开发-- 删除留言
之前文章FastAPI(七十三)实战开发《在线课程学习系统》接口开发-- 回复留言,那么我们这次分享删除留言接口的开发。如何实现呢,首先在message_method.py中实现具体逻辑,也很简单。可以对留言进行删除,这里的删除,我们使用的是逻辑的删除,不是物理删除。然后实现接口api:message.py。我们来梳理下这里的逻辑。3.判断删除的留言是否存在。2.请求携带留言的id。1.判断用户是否登录。原创 2024-07-24 17:10:48 · 244 阅读 · 0 评论 -
FastAPI(七十三)实战开发《在线课程学习系统》接口开发-- 回复留言
之前文章分享FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 留言列表开发,这次我们分享如何回复留言。首先还是创建参数pydantic对象:message_schema.py。其次,实现主要逻辑:message_method.py。最后,实现接口api,在message.py中。2.用户登录后判断回复的留言信息是否存在。按照惯例,我们还是去分析这里面的逻辑。原创 2024-07-24 16:26:43 · 295 阅读 · 0 评论 -
FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 留言列表开发
之前我们分享了FastAPI(七十一)实战开发《在线课程学习系统》接口开发-- 查看留言,这次我们分享留言列表开发。首先,在message_method.py中实现主要逻辑。3.留言列表中要根据是留言回复,进行列表重组。2.根据登录用户查询留言列表。1.判断用户是否登录。原创 2024-07-24 15:51:06 · 284 阅读 · 0 评论 -
FastAPI(七十一)实战开发《在线课程学习系统》接口开发-- 查看留言
梳理后发现,之前在接口设计的时候,有些欠缺,查看留言,是查看单个的留言,查看留言后,对应的留言变成已读状态。那么我们这个都需要传递一个参数,这个参数应该是留言的id。之前FastAPI(七十)实战开发《在线课程学习系统》接口开发--留言功能开发分享了留言开发,这次我们分享查看留言。在之前设计返回状态码的时候,发现状态码有缺失,我们增加下缺失的。3.判断是否是当前用户的留言,或者接受的方是自己。梳理这里的逻辑,这个接口要依赖登录。5.如果已读且回复了,要带回复的内容。以上则是实现查看留言的接口逻辑。原创 2024-07-24 11:35:21 · 384 阅读 · 0 评论 -
FastAPI(七十)实战开发《在线课程学习系统》接口开发--留言功能开发
在之前的文章:FastAPI(六十九)实战开发《在线课程学习系统》接口开发--修改密码,这次分享留言功能开发。接下来实现接口逻辑,message_method.py。最后将留言相关路由注册到main.py中的app下。首先,看下对应的pydantic参数模型。3.校验用户是否和留言的用户一致。在message.py中实现接口。4.校验留言长度是否符合要求。2.校验留言的用户是否存在。我们梳理下对应的逻辑。1.校验用户是否登录。至此,留言接口完成。原创 2024-07-23 16:12:33 · 323 阅读 · 0 评论 -
FastAPI(六十九)实战开发《在线课程学习系统》接口开发--修改密码
之前我们分享了FastAPI(六十八)实战开发《在线课程学习系统》接口开发--用户 个人信息接口开发。这次我们去分享实战开发《在线课程学习系统》接口开发--修改密码。4.删除对应的用户token以及错误密码存储的数据。1.需要用户登录,根据登录的用户,去校验密码。那么开始代码实现,对应的修改密码的参数模型。2.校验成功,我们判断新密码是否符合要求。接下来实现接口:user.py。至此,修改密码接口完成。原创 2024-07-23 15:25:24 · 319 阅读 · 0 评论 -
FastAPI(六十八)实战开发《在线课程学习系统》接口开发--用户 个人信息接口开发
在之前的文章:FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发,今天实战:用户 个人信息接口开发。因为我们不一样的用户个人信息不一样,而且需要依赖登录,那么我们需要根据用户是否登录来返回用户信息,根据用户的角色来返回对应的信息。这样判断了用户是否登录,并且在登录的情况下返回了用户名和角色信息,接下来我们可以完成对应的获取信息接口,在user.py中增加。校验下登录,因为我们的token在生成的时候,我们存储了用户信息,那么我们现在看下如何根据token获取用户的信息。原创 2024-07-23 14:45:05 · 268 阅读 · 0 评论 -
FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发
这次我们分享实际开发--用户登陆接口开发。对应操作数据库查询用户的逻辑我们使用之前注册的时候使用的get_by_username即可。而且redis初始化相关逻辑之前我是放在了mian.py主文件中,今天我将其单独提取出来维护。接着我们去设置pydantic登录参数校验模型,同样添加到user_schemas.py中。4.60分钟内失败次数大于等于3次,60分钟内不能登陆。接下来,在user.py中增加我们的登录接口。这里我们继承的是之前的UserBase。至此,我们的登录接口就完成了。原创 2024-07-22 17:45:17 · 379 阅读 · 0 评论 -
FastAPI(六十六)实战开发《在线课程学习系统》接口开发--用户注册接口开发
其次,我在models中新增了初始化roles的方法,并将该方法加入到了startup中间件中,每次启动程序都会检查是否要初始化该数据。1.校验参数是否合规(这里我使用的pydantic自身的校验,见user_schemas)因为role和sex的值是固定的,所以我创建了两个枚举类来限制这两个字段。到这里我们基本完成了注册接口的开发,使用 到了知识点passlib。在前面我们分析了接口的设计,那么我们接下来做接口的开发。最后,我们要把新增的路由注册到main中的app。接下来,我们看下注册接口的逻辑。原创 2024-07-22 15:37:06 · 302 阅读 · 0 评论 -
FastAPI(六十五)实战开发《在线课程学习系统》基础架构的搭建
接下来我们的开发只需要关注主逻辑的处理即可,准备放到对应的crud.py和schemas.py文件中,其中crud主要是逻辑处理详细代码,schemas中主要是参数模型以及响应结果模型。在之前三篇,我们分享的就是需求的分析,基本接口的整理,数据库链接的配置。放所有中间件的地方,比如mysql,redis,mongodb等(主要是数据库操作相关)数据库表模型放在这里(你也可以把数据库相关的都放在这个目录下)之前配置的链接mysql数据库的配置放在对应的database.py中。通用目录,放一些通用的处理。原创 2024-07-19 16:51:43 · 285 阅读 · 0 评论 -
FastAPI(六十四)实战开发《在线课程学习系统》设计数据库以及连接配置
针对前面的实战开发“在线课程学习系统”梳理系统需要的接口,我们首先对数据表进行设计。原创 2024-07-19 16:22:14 · 193 阅读 · 0 评论 -
FastAPI(六十三)实战开发《在线课程学习系统》梳理系统需要接口 (下)
{ "code":200, "data":"ok", "message":"成功"}路径:/course/viewcomments/{id}路径:/course/offshelf/{id}路径:/course/onshelf/{id}路径:/course/courselist。路径:/course/quit/{id}路径:/course/like/{id}路径:/course/add/{id}"message":"成功""message":"成功""message":"成功""message":"成功"原创 2024-07-19 10:52:05 · 618 阅读 · 0 评论 -
FastAPI(六十三)实战开发《在线课程学习系统》梳理系统需要接口 (中)
{ "code":200, "data":"ok", "message":"成功"}{ "code":200, "data":"ok", "message":"成功"}路径:/user/deletemessage/{id}路径:/user/rebackmessage/路径:/course/detail/{id}路径:/user/messagelist。路径:/course/create。"message":"成功""message":"成功""message":"成功"路径:/course/edit。原创 2024-07-19 10:32:19 · 342 阅读 · 0 评论 -
FastAPI(六十三)实战开发《在线课程学习系统》梳理系统需要接口 (上)
针对上一篇需求分析,我们需要对接口进行梳理,大概得规划出现有的接口,作为我们第一版的接口的设计初版。原创 2024-07-19 10:25:22 · 531 阅读 · 0 评论 -
FastAPI(六十二)实战开发《在线课程学习系统》需求分析
基础的分享我们已经分享了六十篇,那么我们这次分享开始,将用一系列的文章分享实战课程。我们分享的系统是在线学习系统。我们分成不同的模块进行分享,目的是带着大家去用fastapi去实战一次,开发一些功能模块,锻炼实战能力。实战大概分为:① 需求分析,② 接口设计,③ 数据库设计, ④ 整体框架, ⑤ 接口开发, ⑥ 接口测试, ⑦ 部署。我们针对“在线课程学习系统”,进行需求分析。那么我们针对这个系统呢,梳理出来下面的主要角色,以及对应角色的功能。该系统,主要满足教师发布课程,学生学习课程。原创 2024-07-19 10:09:20 · 487 阅读 · 0 评论 -
FastAPI 学习之路(六十)打造系统的日志输出
也是按照固定的格式给我们输出的,还包含了我们是在哪一行输出的,什么方法中,方便我们后续的排查问题。看下请求的输出:(控制台中日志输出的颜色根据你使用的类型不同,对应的日志颜色也不同)我们要搭建日志系统,可以使用loguru,很不错的一个开源日志系统。我们在common创建log.py,使用方式也很简单。启动后,如果logs文件夹不存在会自动创建该文件夹。原创 2024-07-18 15:37:31 · 298 阅读 · 0 评论 -
FastAPI 学习之路(五十九)封装统一的json返回处理工具
在本篇文章之前的接口,我们每个接口异常返回的数据格式都不一样,处理起来也没有那么方便,因此我们可以封装一个统一的json。改造后,我们的返回消息,可以自定义code,message,data。接下来我们再次改造下我们的新建用户的接口。把代码统一放到common下面的json_tools.py里面,我们在接口返回的时候调用。这样我们就完成了统一接口响应处理,后续我们可以在所有的接口中使用。我们看下修改后的用户返回。我们看下处理后的效果。我们看创建重复的返回。原创 2024-07-18 15:16:38 · 543 阅读 · 0 评论 -
FastAPI 学习之路(五十八)对之前的代码进行优化
调整之前websocket相关,统一放到routers目录下,创建websocket.py。redis相关配置信息,如host,port,db等也需要移到config中一起管理。调整完后,启动看下接口文档(注意:如果想要websocket接口展示到文档中,需要做额外的配置)我们之前登录认证的一些内容都是直接写入到代码中,我们现在统一的放到config.py中。修改main.py,引入redis相关配置,并修改初始化redis方法。修改user.py的引入token配置相关方式为。首先是token相关配置。原创 2024-07-18 14:43:45 · 124 阅读 · 0 评论 -
FastAPI 学习之路(五十七)校验是否登陆
在之前的分享的中,产生了token,用于做登录的认证,那么产生了token后,登陆携带了token,我们如何校验呢?我们发现,当携带token后返回了当前的用户信息。接下来,我们修改下之前获取用户信息接口,需要依赖登录,返回当前用户信息。3.依赖登录的接口,接收到请求,判断是否在headers中携带token。7.查询到username的token且token相等,我们认为用户登录。②:携带token(如果没有token值,先调用登录接口)2.调用依赖登录的接口,在请求头中携带token。原创 2024-07-18 10:30:56 · 250 阅读 · 0 评论 -
FastAPI 学习之路(五十六)将token缓存到redis
在之前的文章中,FastAPI 学习之路(二十九)使用(哈希)密码和 JWT Bearer 令牌的 OAuth2,FastAPI 学习之路(二十八)使用密码和 Bearer 的简单 OAuth2,FastAPI 学习之路(三十四)数据库多表操作,我们分享了基于jwt认证token和基于数据库创建用户,那么我们今天把这些代码整理下,形成基于数据库用户名密码,登陆验证token存储到redis中。实际上就是把之前的方法柔和到新的方法中,需要调整下之前的创建用户,把登录实现了。接下来,我们调用登录api。原创 2024-07-17 17:21:47 · 430 阅读 · 0 评论 -
FastAPI 学习之路(五十五)操作Redis
这里我们就用到了上一篇中分享的startup和shutdown事件。可以看到,redis存储了结果,接口也正常返回了数据。这只是一个简单的demo,后续可以用来缓存,也可以用来存储token。FastAPI 学习之路(三十四)数据库多表操作。这次我们分享的是非关系型数据库--Redis。FastAPI 学习之路(三十二)创建数据库。FastAPI 学习之路(三十三)操作数据库。之前我们分享了操作关系型数据库,具体文章,接下来,我们去导入创建对应的链接。首先,我们需要安装对应的依赖。原创 2024-07-17 15:23:51 · 289 阅读 · 0 评论 -
FastAPI 学习之路(五十四)startup 和 shutdown
在实际开发中,总会遇到这样的场景,我们想在启动或者终止的时候,做一些事情,那么应该如何实现呢?其实很简单,我们注入这两个事件即可。在结束的时候,如果有IO的操作那么必须走同步的方式,不能用异步的方式。1.数据库的连接,断开连接,可以在开始和结束前。4.终止程序前需要处理一些后续,清理之类。那么实际开发中如何使用呢?2.redis的链接和断开链接。3.初始化一些前置条件。原创 2024-07-17 10:49:55 · 170 阅读 · 0 评论 -
FastAPI 学习之路(五十二)WebSockets(八)接受/发送json格式消息
前面我们发送的大多数都是text类型的消息,对于text消息来说,后端处理出来要麻烦的多,那么我们可以不可以传递json格式的数据,对于前后端来说都比较友好,答案是肯定的,我们需要做下处理。原创 2024-07-16 16:03:33 · 547 阅读 · 0 评论 -
FastAPI 学习之路(五十一)WebSockets(七)实现一对一聊天
其实也比较简单,还是之前的方法,只是对应的path不一样,而且要发送给用户的消息使用了“?”拼接,实际上,可以作为参数带过来,这只是讲个思路,并且我们要发送给的人也在前端页面选择或者填写。基于上一篇内容,其实这个一对一也比较简单,我们在之前的websockets管理中已经实现了一对一发消息的内容,这次呢,我们只需要实现一对一如何处理消息即可。这里使用填写的方式,新增一个input标签,让用户来自己填写要发送给的用户,这样就完成了一个简单的一对一的聊天demo。原创 2024-07-16 15:30:05 · 606 阅读 · 0 评论 -
FastAPI 学习之路(五十)WebSockets(六)聊天室完善
首先,我们的登录用户还是用了之前分享中的数据库相关用户,直接调用,之前也是从数据库获取用户,校验密码,密码成功后才让登录。我们现在实现的是针对所有人和广播。那么我们看下,我们的管理聊天链接的已经完善。其次,我们建立了链接管理类,但是我们现在的链接都是没有针对发消息做管理的,我们去扩展下我们之前的发消息的类。我们这次只是对于之前的功能做下优化,顺便利用下之前的操作数据的接口,使用下数据库的练习。我们从简单的聊天室入手,慢慢改造我们的代码,慢慢完善。首先,第一个用户已经登录进来了,接下来登录第用户B。原创 2024-07-16 10:36:46 · 335 阅读 · 0 评论 -
FastAPI 学习之路(四十九)WebSockets(五)修复接口测试中的问题
"""websocket 链接管理""""""存放链接""""""链接""""""断开链接,移除"""原创 2024-07-12 16:06:58 · 821 阅读 · 0 评论 -
FastAPI 学习之路(四十八)WebSockets(四)接口测试
在我们测试的过程中,肯定会对接口进行测试。之前分享过的FastApi学习之路(三十八)对开发接口进行测试,那么我们针对websockets接口怎么测试呢。这个错误,主要是我们在最后的时候没有释放链接,我们可以在代码中链接接受到消息后,返回完毕关闭链接,或者说我们单元测试的时候关闭链接。其实要做的测试很简单,我们可以利用这个方式对于我们已经开发的接口进行测试。原创 2024-07-12 15:14:45 · 482 阅读 · 0 评论 -
FastAPI 学习之路(四十七)WebSockets(三)登录后才可以聊天
这样我们就可以登录后,然后去获取登录产生的token,然后和后端发发送消息,这样我们完成了一个登录聊天,退出后无法聊天的功能。我们如果直接访问聊天的页面,也是可以直接去定向到我们的登录的界面呢,我们的聊天是依赖于我们的登录的。然后我们可以去启动下,当我们启动完成登录后发现本地存了token,那么这个时候我们需要改造下webchat.html,我们取本地的 token,同时也实现了一个退出的功能。之前我们是通过前端自动生成的token信息,这次我们通过注册登录,保存到本地去实现。成功后才可以发送聊天内容。原创 2024-07-12 11:32:54 · 572 阅读 · 0 评论 -
FastAPI 学习之路(四十五)WebSockets(二)
上一节,我们分享了WebSockets入门的使用方法,本节,我们在原来的基础上,进行深入的演示。在 FastApi学习之路(三十八)Static Files,我们提到了静态文件的使用,我们按照之前的方法,将上一节中的静态代码抽离出来。这样我们的WebSockets就可以带token来做登录了,但是我们的token呢,只是做了简单的校验。肯定是可以的,我们在下次分享的时候将登录退出分享出来。但是我们之前的html代码去调试的时候,发现报错,因为我们需要依靠session或者token。原创 2024-07-12 09:58:14 · 685 阅读 · 0 评论 -
FastAPI 学习之路(四十四)WebSockets
其实很简单,我们在后端写一个接收消息的接口,有消息来了,我们就处理这个消息,不出之前都是处理的http,现在是websocket。我们之前的分析都是基于http的请求,那么如果是websockets可以支持吗,答案是可以的,我们来看下是如何实现的。如此我们简单的实现了一个websocket的功能。那么我们有一条特定的消息,我们就关闭聊天,如何处理呢?虽然我们只是简单的实现了后端,但是可以看出fastapi对于websocket有一个很好的支持。我们可以看下面一个简单的后端写的例子。原创 2024-07-11 17:34:59 · 562 阅读 · 0 评论 -
FastAPI 学习之路(四十三)路径操作的高级配置
在实际开发中,可能我们有些接口不能在接口文档中与其他业务接口一样开放给前端或者其他对接人,那么我们肯定会想着在接口文档中对其进行屏蔽隐藏操作,那么可以实现吗?原创 2024-07-11 16:35:32 · 209 阅读 · 0 评论