粉丝913获赞898

哈喽,大家好,今天我们来讲一下这个 fast api, 为什么我没按照上节课继续讲呢?因为我发现这也是一个非常重点的知识,就是拍摄里面比较进阶的用法。嗯,它相当于顾名思义嘛,是一个快速建立 api 的 一个工具,所以我们必须要去学它,因为后面就是上上项目之后,嗯,如果不学的话,可能有看不懂代码之类的。 然后我们先现在也可以快去过一下这个知识,就它内容其实挺多的,但是我,嗯给大家讲些重点, 然后它主要特点就是这些,主要我们使用的就是这个 pedantic, 然后内部使用 a sync 和 await 来支持一步并发,这个后面会讲,然后这个自动生成 api 文档是它最显著的一个特点,就是它非常的方便,它自己帮你生成了 api 文档,需要记,需要我们去手写,所以它开发效率也很高。 然后这个 padenta 模块的话后面讲,因为这个,嗯,大家看可能有点看不懂,就什么额外的原数据啊?这个,嗯,后面融入代码里面看,然后这个并发的话,它分为同步代码和异步代码, 然后同代码就相当于是你在排队的时候,你就一直等,什么也不干,等着菜端上来了,你才能进行下一步。然后异步代码就相当于是你点自己的事,然后外卖到了你再去拿,这种就是异步代码,然后异步代码就可以提升它的一个效率。 我们来看这个路径参数,这个路径参数的话看这个有点看不懂,然后就是我们看下面这个例子,用这个例子就可以看到这个路径里面相当于是一个网页的路径吗?前面是什么 http 啊,这个我们就先把这个后面路径写出来,然后写出来之后这个东西是可以替换的,这个东西就叫它的一个路径参数, 然后这个查询参数的话就是,嗯,不是写在这个路径里面的参数,通常做过滤、搜索、分页这些东西。 嗯,我们接下来看这个请求体,请求体是客户端发给 api 的 数据,响应体是 api 发给客户端的数据,然后 api 上面嗯肯定是要发送响应体的,但是客户端不一定发送请求体,这个嗯也挺好理解的。 然后这个规范,规范中没有定义使用 get 发送请求体的操操作就是这个 fast a。 嗯, api 这个工具一般不会用 get 来发送请求体,除除非是非常极端的用力。然后这个也不用去特别了解,就一般都是用 post 嘛。 然后是查询参数和字不串的校验,嗯,我们在校验的时候,这个地方设置了最大长度为五十,然后这是用嗯 query 来进行查询的, 然后这个 query 是 在嗯参数 p u 提供的时候做出了限制,最大长度为五十,相当于是在做一个字不串的校验,让它让 p u 的 值不能超过五十。 路径参数和数值校验,它和查询差不多,可以使用 test 为路径参数声明,相同类型的嗯校验和原数据。这个呢,就是说 像是你这个规定了 l e, l e 等于十,然后 l e 的 意思是要小于等于,所以你这个就相当于给它数值进行了一个校验,你必须要小于等于十,我才能校验通过,你大于十,嗯,传回去是会报错的。 然后其他的像 l, e 是 小于等于嘛? gt 就是 大于,嗯,大于查询参数的模型。 query 和 pass 都是用在函数参数上的,就是像我们刚刚这样都是用在这个里面, 然后是请求体的这个字段,嗯,这个 field 相当于是就是在 pedantic 这个请求体里面,这个相当于就是写了一个请求体,因为它有一个 based model 嘛, 相当于就是在这个请求体里面去写,而不是在其他地方去写,就是用 field, 然后它也是做一个数据的校验,就是让它不大于三百。然后 cookie 呢?就是存储在浏览器中的一小部分文本数据, 这个大家应该都了解一些,就是我们浏览器会在后续请求中自带携带这些 cookie 发回服务器,从而实现状态的保持。然后我们导入 cookie 的 话,就是在这 from fast api input cookie, 然后在这使用, 就相当于是刚刚不是用的 query 吗?然后我们现在改成了 cookie。 接下来是这个带有帕拉丁模型的一个 cookie, 相当于你是?嗯,在这个帕拉丁里面引用了这个请求体,因为刚刚是没有引用了这个请求体之后,然后再写的这个 cookie。 接下来是禁用额外的 cookie, 然后就是用这个也是额外的一个禁用,然后把这个 model config 来设置,设置好就可以了,别的都一样。 然后是黑黑的,它是用来传递关于请求或者客户端的信息,黑的的参数它是有这些,然后这些,嗯,比较常用的就 cookie, accept 啊,还有这个 user agent 就是 用来去获取客户端信息的一个东西,然后我们一般也是写在这个地方 黑的,还可以进行自动地转换为,嗯,转换下划线为这个杠,嗯,因为在这个 fast api 里面都是使用的这个杠, 所以我们一般是会把这个下划线的东西,它会自动去转换成这个杠,然后我们主要是用的这个, 把它开为 true 就 行了。 convert underscores 把它设置为 true, 然后它就可以自动转换了。响应模式就是,嗯,限制返回给前端的内容,这一部分比较重要,我们可以看到这个嗯, response 杠 item, 杠, model 等于 item, 这个相当于就是响应模型等于 item 这个类型,然后这个的响应模型用的是 list 类型的 list, 然后括号 item, 就 这两个类型是不一样的。 嗯,这个响应模式是什么意思呢?就是说你客户端如果输入进去了像密码这种敏感的东西,然后你返回给前端的内容是不能包含这个密码的,所以你这里面的 请求体是不能写这个密码的东西,然后它就相当于是返回给你的时候,就只返回这五个东西,然后就不包含密码。如果你多输入了一些字段,它也给过滤掉了,然后你少输入了,比如说像 description text, text, 这是这三个的话,它都会给你填默认的值,比如说 non 啊,还有一个空的列表啊这种, 然后这两个是必须要填的,不然的话就会报错。然后是文件上传,我们可以先安装一个依赖这个, 然后这个分为文件上传,分为两种,就这两种,一个是 byte 读小文件的,然后把它读到内存里,一个是 upload file 是 用,嗯,是传大文件的, 这可以看到就是这儿 byte 等于什么,什么以这种形式来传传文件,然后这个就是 file, 然后然后 upload, 嗯,我们小文件放在内存里,大文件就放到硬盘里面,这样会,嗯,这样可以高效地去处理,会占满你的内存。 然后我们 file 是 使用这个 sd, 嗯, temporary file 这个东西就是,嗯,文件小的时候,内容会先存储在内存里,然后文件变大,超过一定的预值的时候就会自动写在磁盘上,嗯,成为临时的文件,这样就是既能提高性能,又能,嗯,保证大文件不会撑爆内存。 然后这个 feel like 就是 顾名思义呢,就是像文件一样的东西,是什么呢?就比如说这种用的 bite bite i o 这种东西,就是你一直写了一个 hello world 这种词这种句子,但是它一旦看到你有这这种 bite i o 或者是 read i write 啊这种嗯函数的话,它就会把它当做一个文件去处理, 然后这个多文件上传啊,我们就使用这个 list 来实现,然后用一个循环来便利你上传的文件。最后要重置文件的一个指向下一个。 好,今天这节课就到这里,然后下一节课我们会讲这个 transformer 的 内容,就给大家先补一下基础知识,然后再讲实际应用吧。 嗯,要是大家想要这些资料的话,就点赞收藏一下我的视频吧,然后关注一下我,嗯,我这些资料都可以免费发给你,然后你来私信找一下我。


ok, ok, 欢迎大家来到大鹏 ai 教育这个视频呢,我们来讲一下 http 啊,这个呢是我们 fast api 全站班二零二六年啊, fast api 现代外五开发下面的第四个课程。 好,来我们看一下啊,布鲁斯里啊,为他的万维网提出了三个 核心的组建,第一个呢是 html, 它主要是用于展示数据的一种语言 啊,特别的重要,大家现在看到的网页啊,网页长什么样,就全都是靠 html 来决定的。 还有呢就是 http, http 呢,是客户端服务器协议啊,这个呢也可以说是非常非常重要的一个东西 啊,因为如果没有 http 的 话,我们这个数据是无法从服务器传到这个客户端的,也就是说我们在网页中看到的数据呢,那么它就是静态数据啊,就是死的数据,它就不会那么多种多样了。 好,还有呢就是 url, url 呢,叫做外部资源的一个选址方案,这个呢也特别重要,为什么呢?因为 url 就 决定了这个网页的访问地址和访问路径啊。 来,我们再往下看啊,事后看的这些是似乎是显而易见的啊,但他们组合在一起却产生了极其强大的效果。 随着外部的发展,人们不断尝试啊,一些想法,例如这个 emoji 标签呢,就是图片标签,它是用来展示图片的 啊,在导二文式的竞争中存活下来啊,导二文式的应该就是物竞听天择,适者生存,对吧。而当需求逐渐清晰,人们开始认真的定义标准 啊,他这里说的认真的定义标准呢,就是下面 race 的 风格啊,以及其他的一些东西,这个呢就不在我们这个小视频里面去讲解。 好,那这个,那刚才讲的这些呢?就是 http 啊啊,比较简单。好,如果大家喜欢这种短视频的形式呢?希望大家点赞、评论、关注、转发,谢谢大家。

上节课呢,我们已经将之前了解过的技能整合到了这一个 python 文件里边,我们会发现当前这个 python 文件里边只有三个接口, 但是如果说我们想去修改其中的某一个接口时,那么这时候我们找到对应的代码时,其实比较费劲的, 因为你会发现我们要去拉动滚动条,哎,拉很久,然后再找到对应的这个路由,还要去区分一下,看看到底是哪个业务的路由,然后再去定位具体的那个路由,对不对?好,所以说的话呢,像目前这个情况呢,他维护起来是比较费劲的, 那么这时候呢,我们就要去考虑将这个文件呢划分成之前我们了解过的项目结构,也就是说我们需要将这些代码呢分到不同的文件里边,而不同的文件呢,他还可能在不同的文件夹, ok 吧。好,那么这个东西到底怎么去实现?来,我们一起去看一下啊, 那在这的话呢,我们就以当前目录为例啊,我们就在这个根目录下啊,在咱们当前这个 fast api 扣的这个根目录下,创建一个文件夹来创建我们的项目就可以了。好吧,好,那在这呢,我们创建一个新的文件夹, 创建一个新的文件夹呢,这个文件夹的名称呢,往往呢就是项目的名称啊,你比如说我们这是房屋系统,就是 room 啊,下划线 system 啊,如果说是其他的一些项目的话呢,哎,我们就根据对应的名称去修改就可以了。好吧,好,那么在这的话呢,我们就以 project 为例,好吧,好,那么写好它了以后呢,然后在这里边我们需要去创建对应的工程目录, 这工程目录呢也比较简单,因为我们之前在咱们这个文档里边啊,就已经看过了,那我们可以等会再去回顾一下,比如说我们可以按软件功能来进行划分,也可以按照业务模块来进行划分,对不对? 好,那么在这呢,我们就以软件这种方式为例啊,以这个为例,这个会了以后,你再去改其他的,基本上也没什么太大问题啊。 好,那么我们再回到咱们这个代码这边来,然后在这的话呢,我们需要去创建一个 man 点 py 文件,那么它的主要作用的话呢,就是启动项目 啊,启动启动项目,当然这个启动项目的话呢,肯定是要有主应用的那个 app 对 象嘛,对不对?所以说呢,在这我们要追加相应的代码,这个代码呢我们一会再去加,我们先把这个目录先给它创建出来。 好,那么有这个 project 以后呢,然后在里边我们再创建一个文件夹,叫做 app, app 代表的就是我们当前的这个主应用啊,我们所有的应用代码呢,全都存放在这里边, 而在这个主应用里边呢,我们需要去创建对应的文件,你就比如说啊,我们呢要跟数据库做交互,对吧?那我可能就要去创建 models, 跟数据库做交互的这么一个文件啊。然后再其次就是我们跟前端用户啊要做交互,那么它在传参数的时候是不是我们要做限制啊?所以说的话呢,我们再创建一个叫做 scammers。 好, 那么除它以外的话呢,我们还可能啊,要跟数据库做交互的时候呢,有一些配置信息,这个配置信息呢,我们就可以给它加到 configure 里边啊,然后再就是专门管理数据库的, 那么目前来说的话呢,咱们仅仅是用了一个 my circle 数据库,对不对?那么后期的话呢,我们可能要跟多个数据库做交互,所以说呢,我们专门有一个专门处理数据库的这么一个文件好,那么除这以外的话呢,还有一个比较主要的东西叫做什么呀?叫做 root 啊, root, ok, 好, 那么目前来说的话呢,现在啊,我们这个核心的啊,核心的这几个文件就算是搞定了,那在这我们需要去注意的就是我在这个写这个东这个名字的时候呢,有的加 s 了,有的没加 s, 这个加 s 的 话呢,说明里边可能会配置多个啊,当然像这种 this b s 的 话,后期也可能会有多个,但一般情况来说的话呢,它并不会太多, ok 吧?所以说在这我们就不再去加了。 还有就是这个名称的话呢,我们如果说到了公司以后啊,要按照人家公司的规范去来看一下人家怎么去写的,如果说他们没有明确的规定的话,好,那么这时候的话呢,这个 s 你 可以加,也可以不加, ok 吧? 好,那么这是这块成,那么这搞定了以后呢?然后这个 root 里边呢,我们要根据具体的业务来进行划分,你比如说,哎,我现在有用户模块,好,那我就加上一个 u 字儿,对吧?那么我就加上一个 item 啊,点 这个文件好,然后再起的就是这里面呢,还要创建一个 i n i t, 就是 python 包的那个模块啊,这个文件好,有它以后的话呢,然后再起的就是我们在 app 里边的话呢,可能会要去设置一些中间键,那么所以说的话呢,我们在这要再去创建一个叫做 middleware 这么一个文件, ok 吧?好,那么把它创建好了以后, ok, 那 么整体的啊,咱们这个目录结构就算是搞定了啊,就是最应该说是一个简化版的吧,咱们就算是搞定了,那么后期的话呢,我们可能优化地方啊,就比如说我们到企业了可能会优化的地方,那么有可能就是比如说这块 啊,像这个 model 这块,还有这个 skimmers 这块,那这块的话呢,可能啊,就比如说我们的业务比较多,那么我如果说我把所有的这个业务模型全都放在这里边的话呢,会比较乱, 你就比如说我们这个商群,呃,就比如说我做一个这个项目吧,这个项目里边已经有一百多个表了,那你想想一百多个表全都放到这一个文件里边, 哪怕一个表只有一行代码,这还一百行代码呢,对不对?所以说面对这样一个情况的话呢,我们就有可能要对这些模型呢,再进一步的进行划分, 那么再进一步的划分的话,那么这时候怎么办?我们是不是就可以按照这个 root 的 方式进行做?你比如说我在这的话呢,就创建一个文件夹,叫做 models, ok, models 里边,然后再分别去创建不同的这个文件,不同的文件呢,就是负责专门管理不同的模型, 对不对?好,那么这个当然这个不是说一个文件里边只放一个模型啊,只是说放相关的模型,好吧,好,那这样的话呢,我们就可以把多个模型给它进行分拆分啊, 那在这的话呢,我们就不再去拆了啊,因为我们这个模型并没有那么多,好吧,好,那么同理 scammers 呢,也是一样的,那中间键的话呢?有的时候啊,可能会需要对这个功能进行划分 啊,你就比如说有专门针对于某个功能的这个这个中间,或者是专门针对于某些业务的,那么公司如果说需要划分的话,那么好,我们就给他划分,如果说不需要的话,那在这的话,我们还是用同一个文件就可以了, ok 吧?好,那这是这块啊, 成,那么这样搞定了以后的话呢,关于咱们这个创建文件夹,基本上就这么一个意思啊,其实路径基本上就是这么一个情况,后期的话呢,哎,也可能会有变更,但是基本上大同小异,咱们了解了他的一个思维就可以了,其实说白了就是什么呢?就是可以按软件去分,也可以按这个呃业务去分。

ok, ok, 欢迎大家来到大鹏 ai 教育这个视频呢,我们来讲一下服务与 api 啊,这个呢是我们 fast api 现代 python 外部开发第一章,现代外部下面的啊,第二个课程,也是我们整体的第二个课程, 来,我们看一下内容,这个我把它弄下来一点,哎,这就是一个整体的内容, 我们看一下外部呢,是一张伟大的连接之网,尽管大量活动仍然发生在内容层面,比如 html、 javascript, 图像等, 但越来越多的关注点正在转向应用程序接口,这个应用程序接口呢就是我们说的 api, 也就是连接一切的纽带。 通常一个外部服务负责底层的数据库访问和中间层的业务逻辑, 通常统称为后端。而 java script 或移动应用则提供丰富的顶层前端,也就是交互式的用户界面啊,这前端与后端 在这两个世界啊,变得越发复杂且分化明显,往往要求开发者专注于其中一端。比如说现在有前端工程师,有后端工程师啊,如果你两个都会,你就是全站工程师, 成为一名全站开发者已经比过去困难的多了。这两个世界啊,通过 api 进行通信。 在现代外文中, api 的 设计与网站本身的设计呢同样重要。 api 是 一种器皿,类似于数据库模式定义和修改, api 如今已经成为一项重要的工作。 好,那这个呢就是我们的第二个课程服务与 api, 我 呢就给就给大家讲完了,谢谢大家啊,大家如果感觉这种形式可以呢?希望大家点赞评论关注,谢谢大家。

你有没有想过一个问题,就是我们每天刷的那些手机 app, 逛的那些网站,他们背后那些海量的数据到底是从哪来的?又是怎么做到实时更新的呢? 好,要回答这个问题啊,咱们得先来揭开一个秘密,一个藏在所有这些现代应用背后的架构秘密。 其实现在开发软件啊,都流行一种叫前后端分离的模式,你看我们手机上、电脑上能看到的这些精美的界面,这叫前端,他的主要任务就是负责展示漂不漂亮,好不好用。但他自己呢,其实不存储,也不处理复杂的数据。 那数据在哪呢?就在后端,也就是一台台的服务器里,前端需要数据的时候,就会通过一个统一的接口,也就是 api 去向,后端要后端只管提供纯粹的数据,根本不操心前端长什么样。 哎,这个 api 是 什么呢?我给你打个比方,它就像是餐厅里的服务员,咱们用户操作的前端就是顾客,而存着数据的后端服务器就是厨房。 那 api 呢?就是这位服务员,顾客前端想点菜,就把需求告诉服务员 api, 服务员再把菜单传给厨房,后端厨房把菜做好之后,再由服务员给端上来。这个过程里的服务员就是 api, 而它用来沟通的地址,通常就是一个我们很熟悉的网址,也就是 url。 那 么问题来了,这个服务员在前端和后端之间来回跑,它说的是什么话呢?它总得有一种大家都能听懂的通用语言吧? 咱们来看看互联网世界里的这门通用语。这门通用语啊,就叫 http 超文本传输协议, 你完全可以把它理解成整个互联网世界的普通话,不管你是浏览器还是 app, 也不管服务器是什么系统,只要大家说的都是 http, 就 能毫无障碍地沟通。 整个交流过程其实很简单。你看这张图,左边的客户端,比如说你的浏览器,它想看个东西,就会用 http 协议向一个 url 地址发出一个请求, 右边的服务器收到了,处理完之后,同样用 http 协议把内容打包成一个响应,再发挥给客户端,一来一回,一个完整的交互就结束了。 如果我们把这个请求和响应拆开来看,就更有意思了。不管是请求还是响应,它里面都分成几个部分,最上面是请求行或者状态行,告诉对方你要干嘛,或者事情办得怎么样了。 中间呢,是一堆头姓习,就好像是快递单上的备注,写着一些额外的信息。最重要的是下面的主体部分,这里面装的才是咱们真正要传输的数据。在所有这些 http 球球里头啊,有两种,最最常见的,一个叫 get, 一个叫 post, 怎么区分呢?很简单, get 请求就像是你记一张明信片儿,想说的话直接写在明信片儿上,地址栏后面都能看见,而且能写的地方也有限。 而 post 的 请求呢,更像是一个快递包裹,你可以把很多很多东西都安全地打包在箱子里,外面只贴个地址就行了,别人也看不到里面是什么。 好了,有了前面这些铺垫,了解了 api 和 http 这些基本概念之后,咱们今天真正的主角终于可以闪亮登场了,它就是专门用来打造我们刚刚说的那些 api 的 一个现代化神器。 没错,它就是 fast api。 简单来说,它是一个用 python 语言写的性能超高的 web 框架, 它的使命只有一个,就是让你能够又快又好地构建出 api。 如果你想用 python 来创建我们刚才说的那个餐厅服务员,那 fast api 绝对是目前最顶尖的选择之一。 为什么大家现在都这么喜欢用它呢?首先,它快,性能快的能跟 node js 甚至够语言掰手腕。其次呢,它让你写代码也变得特别快,代码量少,还不容易写重复。 最关键的是,它特别智能,你在写代码的时候,它能给你各种提示,帮你检查错误,这一下子就能减少很多人为的失误,让你的程序更稳定,更可靠。 听起来是不是很厉害?那 fast api 这些超能力到底有多强呢?咱们别光说不练,直接上数据,看看它背后的技术到底牛在哪儿? 你没看错,就是这么快!章,按照官方的说法,用发 cpi, 你 的开发速度最高能提升三倍,为什么能这么快?因为它会自动帮你生成交互式的 api 文档,还会给你非常棒的代码提示,你再也不用花大把时间去查资料和调试了。 这个数字也同样惊人, fast api 强制你使用 pi 的 类型提示,这意味着很多潜在的 bug 在 你写代码的时候,编辑器就会直接给你标出来, 这样一来,由人搞出来的错误就能减少将近一半,这对任何一个项目来说,都意味着质量的巨大提升。 那么, fast api 的 这些超能力是哪来的?它可不是凭空变出来的,它聪明就聪明在它是站在了两个巨人的肩膀上,它把 starlight 和 padenta 这两个顶级的库完美地结合了在一起。 其中 starlight 负责所有跟网络通信相关的事,保证了它的高性能。而 padenta 呢,则负责所有跟数据校验相关的事,保证了数据的准确无误。 那么 fast api 是 怎么把这些强大的能力组织起来,让我们能写出特别清晰好懂的 api 呢? 这就要说到一种非常流行的设计风格了,它就像是一张通用的 api 设计蓝图,这种设计风格啊,就叫做 rest。 rest 的 核心思想其实很简单,就是把后端的所有东西都看作是一个个的资源,比如一个学上一篇文章,一个商品,这些都是资源, api 的 url 地址就应该直接指向这个资源。那我们到底要对这个资源做什么操作呢?是想新增、删除、修改,还是查询?这个就由咱们前面说的 get post 这些 http 方法来决定。 你看这张表,一下子就明白了,我们操作的资源始终是学生,也就是 url 里的杠 student 杠。想创建一个新学生,好,那就用 post 的 方法。 想看看所有学生的列表,那就用 get。 如果想操作某个特令的学生,比如一号学生, url 就 变成了杠 student 杠一,然后不管是想看他的信息还是修改,甚至是删除他,都用这个 url, 只是换一下前面的 http 方法就行了, 你感觉一下这个结构是不是特别清晰,特别有条理。所以你看咱们从最底层的 http 协议,到上层的 restful 设计风格,再到 fast api 这个具体的工具,其实它们的目标都是一致的,就是为了让数据的交换变得更简单、更高效、更规范。 而 fast api 呢,就是把所有这些最好的实践都给你打包好了,让你能够用最快的速度、最可靠的 api。 那么当构建一个强大后端服务的门槛被像 fast tpi 这样的工具大把降低之后,我们每个人都应该问问自己,有了这么好的锤子,你想去创造一个什么样的世界呢?你的下一个绝妙点子会是什么?

大家好,我是张大鹏,坚持每天学习,坚持每天进步一点点。今天很高兴和大家分享 fast ipi 现代派房 web 开发第十三讲分层软件系统为什么一定要分层? 不是为了看起来更高级,而是为了在系统变复杂之后,依然有人敢改,有人能接受怪物。史瑞克里有一句很有意思的话,他说自己像洋葱一样,有一层一层的内心世界。 如果连情绪复杂的食人魔都需要分层才能被理解,那结构复杂的软件更不可能把所有东西揉在一起。很多系统在最初阶段都很清爽, 功能少、逻辑值。每一行代码看起来都很合理,但随着需求增加,功能叠加,代码开始互相牵扯。这时候最先出问题的 往往不是功能是否能跑,而是结构是否还能撑得住。分层本质上是在复杂出现之前,先把边界划清楚。最外层是 web 层,他直接面对请求,也负责返回结果。他的职责很简单,接收输入、组织输出。 他不做业务判断,不存在规则,只是负责把信息传递到正确的位置。真正做决策的在中间这一层,这里是业务逻辑所在,规则、流程、判断、策略都应该集中在这里处理。当需求变化时,优先调整的也应该是这一层。 再往下是数据相关的部分,数据从哪里来,存到哪里去,如何查询,如何更新。这一层不理解业务含义, 他只负责把数据安全准确的处理好。还有一层,用来定义数据的形态自断怎么组织结构如何表达,不同层如何达成一致。 所有层使用同一套数据定义系统才能保持清晰和稳定。最外面是客户端,可能是浏览器,也可能是其他系统。最里面是数据库,负责数据的持久化,不参与任何业务决策。当每一层都只做自己的事,不越界,不混乱,系统才能在变化中保持秩序。 分层不是为了把代码写复杂,而是为了在复杂不可避免的时候,系统依然可控。 今天的知识点就先和大家分享到这里,如果你在学习或实际开发过程中有任何疑问,欢迎在评论区留言交流,也希望大家能点个免费的赞,给我持续更新的动力,感谢大家的支持,我们下个视频再见!

fast api 后端开发框架特点介绍 好,今天我们讲一下 fast api 后端开发框架的一些相关内容。整个框架呢,它是基于 python 的 一种呃后端的一个应用框架,它在前端肯定是可以结合各种 呃各样的前端,包括我们可能用到的 b s 端、 h 五端,小程序端,或者说 inform, 我 们或者叫我们叫桌面端,这种呢,它是都可以实现这种接口的对接的,相当于一个后端的一个数据中心啊,可以对接多个前端的一个 一个模式。呃,我们这里面讲这个框架呢,它的技术栈起主要是基于拍审发视 api, 还有斯克 alchemy, 还有帕达特 reddis, 蒙古 d b 的 一个后端的一个整合。 这个技术栈可能有些人没接触过拍审开发,或者对拍审开发还不太了解的话,可能存在一些问题啊,就是不太了解这些名词代表是具体什么意思。 那我们在后面介介绍的话,我们会逐一讲讲一下这些概念性的东西,让我们整体有个了解 这个视频呢,我们主要是要讲一下整个发售 a p i 的 一些初步的一个知识,就是整个框架大概怎么一个初步的一个了解,以及各个技术的一个方向,还有整个项目的一个层次啊,以及一些准备工作,包括环境呢,还有一些插件呢,或者说我们 啊,部署啊,测试啊,这些就是我们整体有一个大概的了解,这个是我们开发一套整体的应用所需要的一个过程, 就是我们首先我们了解整个技术的东西呢,我们首先要对各个方面要做一个比较全面的了解,然后再深入每个具具体的一个功能细节啊,或者开发步骤上面去逐逐一的去攻破各个的技术的一个难关。 首先我们这个章节呢的提纲大概讲一下,就是包括有这几个部分的内容,呃,主要是有呃 f s a p i 的 一些相关介绍啊,以及 f s a p i。 后端的我们整套项目的框架的一个特点,它具具有哪些亮点的东西,我们要讲一讲, 然后后面我们会讲的要运行啊,或者是部署啊,开发啊,这些整套框架需要安装哪些开发环境 啊,然后再怎么样去运行它,然后呢我们大概对整个后端的框架有个了解,这样子我们才能够入手我们整个项目的一个具体开发工作。 然后呢项目运行起来呢,我们可能会做一些相关数据库的或者是参数的配置,那我们这个配置应该怎么修改也要着手了解一下。 还有对于整个项目我们要知道各个目录它是代表不同的意思,有个约定俗成在里面,那我们对整个项目的框架的结构有个了解,这样子我们每次会定位信息啊,找 相关的功能点的时候就很容易找得到啊。还有对后端开发框架的 api, 我 们要怎么去做测试呢?或者做做一些了解呢? 这个也是非常关键的,因为我们做后端对接的时候,跟后端对接的时候肯定是需要对这个接口进行一个了解的,否则那里就很难进行一个 呃实际功能的一个测试了。然后还有就是前方项目是怎么的整合这个接口的呢?他是需要准备一些什么条件呢?还有包括我们的令牌啊,或者什么头部信息啊,以及呃返回的结果进行一个处理,或者说总总体上的一个解析。 那我们就要做这相关的一些介绍,还有整个后端的项目我们如何打包啊?然后这如何在 具体部署到项目上?这个就是我们整体的一套的一个后端的一个工作,但开发前端肯定是不同的前端有不同的开发工作,后面我们会逐一对不同的前端进行一个相关的一个介绍。我们这个章节呢,主要是对 那整体的后端的项目就是一个概要性,或者说比较浅显的一个功能的一个介绍,以及大概了解整个项目的来龙去脉。这样子我们在着手整个后端的开发或者增量的开发的时候,就是有一个很 直观的一个认识吧。好,这个我们刚才讲了这个第一个要点呢, fast api 的 介绍呢,跟它的特点有包括有两个部分,就是这里就是它的一个介绍跟主要特点我们都过过一遍, 因为这个东西呢,虽然说不是特别重要,但是呢他也是我们呃给我们提供一个入门的概念的一个了解,知道他的呃渊源以及他的使用价值,功能特点,这样子就非常好的一个铺垫。 fos api 呢,它实其实实际上是一个现代高性能的一个 web api 框架,它的全身可能有很多类似的类似单呃就是坚狗啊,还有那个 flash 啊, 就是以前都是比较有名,但是它 fos api 也是个后来者,相当后来居上吧,相当一个比较呃广,现在应用比较广泛的一个 fos api 的 一个服务的一个标准嘛, 我们大概了解它是拍审称,其实是在开发的一个事实的一个标准框架来的了。呃,第二个呢,它的特点可以快速地生成一些 open api 的 一些以及追审的 skimming 的 文档。 因为我们了解到 web api 开发的时候,知道这个东西一旦生成的话,我们就可以构建它的文档的显示,它就整合了那个 swagger, 就 这种行业标准的一种展示吧,这样子对我们呃查看文档啊,各方面就非常有帮助,就会一目了然。 然后还有它是使用这个 style 的, 作为 web 框架的一个核心,还有派单,派单体课,它是个数据认证的一个标准来的了,就是相当于我们可以呃对数据的进行一个验证啊,处理啊,就非常方便。 好,这里大概了解一下哈,我们就大概有知道这个东西,刚才讲了他拍单口的,他是跟 flash 啊单真狗啊这个类似的一个开发体验,而且有各自而无不及。很多东西呢,他是在 就是在借鉴这种呃以前出现的这种框架的基础上,会改良了很多东西,而且他在异步的处理会更快,更,呃性能上会有更高的一个一个反馈啊, 这就是它的一个整体的东西。所以呢,我们呃对它了解就是要有一个大概的一个认识。 嗯, fox api 这个我们呃它的框架的特点大家也讲了一些,就是它性能,在衣物上的性能会更快,而且也会比较简洁,因为它很多是通过标注性啊,或者说带就是一些命令的东西都会处理得更更方便一点。 自动文档的生成呢,就是我们刚才讲了我们做一个后端跟前端对接的时候,有一个自动文档生成呢时候我们用 swag 来整合呢,看起来就非常方便,那也很 就是一种行业的标准化了,这样子我们就非常能够直观的使用各个各样的一个接口。嗯,还有数据验证这块呢,它是呃派单克是在拍审这这块做的数据验证是非常好的,对,我们很多时候要求数据的一个 就是可能 b 田啊,或者数据的一些约束性的东西呢,我们可以进行一个验证验证,呃,这样子就可以提供比较复杂数据的验证和数据解析吧。 还有一个类型提示,这个我们后面会讲异步支持,也就说它主打这个异步还是比较方便,这种异异步在那个 i o 的 吞吐量或者响应的速度上肯定是比同步的会快一些了。 依赖式注入,这种是很多时候我们很多接口都会提供一种依赖注入的方式,相当于就可以很方便的做这种管理,这种依赖项也就不会呃,就是直接绑定的这种方式。 呃,还有一种其他的功能,就是大家了解有文件上传啊,或者说呃这种安全性啊,后台任务这种就是常规的这种后端框架都基本上支持的了,这个我们就不多讲。 好发四 api 的 后端开发框架呢,这个是我们整套项目框架的它的特点,我们大概呃就 概要性的讲一些几个特点,就这个框架的本身它就是基于拍省的基础上来做的,所以它就是一种跨平台的运行,跨平台的开发,跨平台运行就是我们可以部署在不同的 呃操作系统上,如 mac os、 windows、 linux 以及我们国产系统上的一些平台上,这样子就实现我们真正的跨平台运行。 因为国产系统很多也是基于底层 linux 做的一种系统,例如例如我们那种国信啊什么的,还 基于 vs code 的 这种,我们它本身开发就是一种跨平台的开发,就不管你是 macos 开发还是说 windows 开发,就它的开发体验,开发界面都完全一样的。所以呢, vs code 的 这种就是 跨平台的开发,是非常方便,不管你用哪一种平台来做,我们都非常方便,因为它其中的插件呢,已经什么的界面标准都是一致的。这个如果你在 macos 开发也是效率非常高啊。 如果我们还有一个就是这个整套框架,它是严格的这种前后端的分离的模式。 呃,前后段分离模式很多时候现在也是一种标准的,就是我们不管是基于抓瓦的,那那个不,呃,那个叫什么 呃抓瓦的方式或者断代的方式,它都是一种前后段分离模式,因为这种呢可以有利于我们在后前端做各种各样的对接,例如我们可能是基于这种 v o v 三的 b s 端框架啊,还有 呃 python 六,呃, python 六的那种 python 端呢?还有微信 python 的 这种 python 端和这种是两个都是做那种 python 的 桌面端, 还有 h 五端或者小程序端。呃,还有其他的各种各样的接入,它都是几种 a p i 的 标准接入,那所有其他的接入呢?就是都是一致的,所以我们这个也是严格前后端的一种分离模式的一种好处,还有 完善的基础功能。我们整个框架已经提供了很多标准性的一些功能了,包括我们用户啊,角色机构啊,以及菜单的功能点,就是权限点的管理啊,这些以及日制, 包括操作日记啊,以及登录日记啊,或者说其他的你所需要想记录的一些错误日记啊,这些信息都可以啊,还有字典啊,附件啊,编码规则,是我们一直一直以来为了一些重用做的一些规则性的一些功能模块了, 可以在整个正量式开发的时候,一个业务系统的时候就非常方便的使用这些功能啊,还有用户权限的质段权限功能权限的这个控制的管理就可以很方便的整合起来。嗯, 呃,这个我们讲讲这个功能点,然后我们回头再看看他的一个界面的。呃,开发的一个东西哈,先大概了解下他的功能,因为首先我们要有一个大体的认识,因为框架的东西首先要功能点要讲 啊,好,还有菜单动态的展示,也是一个跟权限相关的一个东西,权限呢,我们可能控制到一些页面的功能点啊,数据线,还有个菜单,它也是作为一个资源来单独控制。呃,框架本身还有个多数据库支持的,因为我们很多系统可能, 比如可能我们在 linux 跑,可能又用喜欢用啊, micro 啊,或者说 posgrid 这种数据库比较多一点,或者 oracle 如果是在 windows 上可能用 cisco 会多点,这种就支持不同的数据库,因为我们在开发业务系统的时候,还真的不确定用户会指定哪种数据库,呃,通过 oim 的 方式能够呃统一整合各开发不同数据库的一个对接呢,就非常方便了。 还有我们呃为了开发框架的方,呃增量开发的方便,我们在代码生成工具上也下了不少苦工 啊,让他更好的为我们服务。可以生成一些后端呢,前端的一些接口,后面我们会讲一下这个内容 啊,基础的业务放行接口呢?抽象,因为我们不想每次开发一个功能都是很累赘的代码,那我们通过这种基础功能提供放行的呃 抽象处理,那我们只需要在啊那个控制器层或者说那个数据访问层,只需要继承它的积累,那常规的 c i u d 接口,就酷路接口,或者说一些分页啊,或者一些呃判断存在啊,这种接口我们都可以已经封装在里面了,而且是通过这种幻形的方式呢,还是比较有点强类型的方式吧,就这样第一个可以减少代码,第二呢也是可以重用啊, 提高效率来开发,不要每个功能都是写一大堆代码,每个代码都差不多,那就没必要,因为我们相同的代码基本上呢都是把它整合在啊抽象类里面去,这样重用非常高效。 好,这就是它的特点。然后这里面就是它的一个后端框架,我们在这里之前我们大概讲看看整个项目的一个内容, 我这里就把这个项目打开。这个项目里面首先如果是个是个独立的一个项目,就后端项目是独立的,我们刚才讲了前端后端是严格分离的,它是这一拍摄的,所以我们就是用 vsco 来进行开发就可以了, 就不需要其他什么任何工具啊,数据库。如果你需要做创建啊管理,那我们就另说啊,一般可以用这种标准的。呃,我们这里讲的就是 navigate 这个来做,我推荐是用这个,这个不管你是 micro or postgraduate 啊,或者说是 ccla, 甚至都可以进行一个统一管理,我们这里有个 micro。 呃,这这个数据存储相非常方便,反正这种备份啊,还原啊都可以基于这个操作。如果是个 server 呢?那你就用标准的是个 server 来做就行了。 好,这就是我们刚才讲的。呃,项目那块我们这里提供了。首先如果是入手项目,我们大概了解一下整个项目的它的一个 结构点嘛,待会我会讲一下。但我们首先项目的话有一个标准的 readme 的 这个标准的说明,如果你说是需要预览这个,因为这个是个就什么,就 呃, md 的 一个文件,它就是很很标准的一种这种格式了。然后如果我们需要预览这个它呢,我们就可以 可以通过预览方式把它看的更直观一点。呃,这个都是我们了解这个格式之后,经常 可以做预览的方式来。这样的,这里我会写了很多相关的步骤,这个也是贯穿着我们整个视频的一个一个内容,会在里面也会穿插着讲,那我们先回到整个项目里面去。呃,那个 ppt 里面去,因为这里我们待会会逐一讲的。 好,这里是,然后我们发射 a p i 后端框架的一个主要特点呢?可能他刚才讲了,它是可以通过 switcher 来整合,我们这个可以查看。如果是你段内啊,或者说是抓把的开发,它都有这种接口的整合,这种是个行业标准,我们可以对 每个接口进行查看,像例如这个它包含哪些接口,呃。我们把它视为顶层, 这个每个接口都列出来了,我们查看每个接口,或者甚至在上面通过授权提供数据。呃。登录授权或提供一些,呃。令牌之后可以每个接口进行一个测试, 当然测试可能在这里测试可能会比较麻烦一点了,我们可能会利用那个 api pos 的, 我们后面也会单独的也会讲一下,这个是我们开发调试的一个利器来的。 呃,当然还有其他类似的一个工具,我是倾向于使用这个,它就是相当于我们。呃,利用,我们可能大概参考一下吧, 我们可能会做一个登录授权,这个就是我们提供一个登录授权的方式的话,或者获得令牌。那我们现在那个项目还没启动起来,我先把它启动起来。呃,一般启动起来,呃,可以通过我们打开的 app 里面有个魅函数, 我们回头怎么把它弄起来呢?我们会讲到这里,我们直接把它运行一下就可以了。 呃。这里会有一个过程啊,它,它,它会有个启动,这个叫什么?虚拟环境,然后它再直接启动起来。我们大概有为了 避免太多口水话,我们这里会讲一下让他怎么跑起来,让他聊个直观的了解,这样子呢,我们会有更明确的一个了解这个系统的一个功能。 好,它这里通过这个绑定它已经起来了,它端口就是这个,这个相当于这个零零零是代表,它包括啊幺二七点,零点零点幺,它跟本机 ip 两个端口,它两个 ip 它都已经绑定了,就像我们不指定 ip 都会有一个 两个地方都出现了。好,我们这里呢,看到它起来之后,我们就可以进行接口。刚才讲了 api pos, 它是做 接口测试的,那我们提供标准的这个路径,这个 pose 的 模式,因为这个接口是 pose 的 方式的, 这个一定要了解,但是这里有很多种方式,不同的方式代表不同的动作,这个做 api pose 的, 呃,不做 api 接口测试的话肯定会了解,那我们这里啊提供一个 body 的 数据, body 数据是通过 pose 的 方式来提供的,那我们测试一下。这里如果是 啊 token 过去是因为我指定了一个 token, 那 如果是一般来说,我们通过全机参数,我们取消这个全机参数 就可以了,因为这个是一个 token, 因为这个接口一旦获得这个令牌呢,整个其他的 api 呢,我们都可以通过全机参数的方式来把它指定,然后做相关的 一个复制过来,相当于我们就会带有一个 head 的 令牌的信息,这个是协议 格式,然后出填进来就可以了。那我们如果是说要测试其他接口,因为我找一个刚才像我们这里测测试一个所有字典的接口,我们发送一下, 他就会获获得这种接口的返回啊,这是我们先获得令牌再测试接口,就是我们常规的调试的方式。 好,我们到这里呢,看到我们整个这里接口的 大概功能了解,然后这里面我们刚才讲了这个户单它返回的接口,它是有个统一的一个协议标准的,因为这个统一的协议标准会给我们在开发对接的时候非常方便,因为我们基本上它的头部信息都差不多呢, 变化的话它就是一个 result, 这里面这个 t 代表一个变化的一个类型跟数据。例如我们返回一个列表,它可能就会有个 total count, 还有 items 这个一个数据的一个集合。 呃,它就是类似于这个 result 里面就是一个可变化的一个对象,包括可能是一个列表啊,或者说是一个簿啊,基础的类型等等这些。那我们后面测试的时候肯定会跟成经常跟这个对接的啊 啊,发射 api 它的后端框架的那个还有个换行接口,刚才我们讲了为什么用换行换行可以很好的抽向各个业务类之间到我们实际的接口,而且还提供类似强类型的这种方式,这样子我们 可以减少代码的同时呢,还可以就是我们使得我们对那个接口啊更更方便,因为它是强类型化的。 然后这种还有底下他这个控制器层,我们做了一个 g 位抽象,还有个数据访问层,我们也做了个 g 位抽象, 这样子都是为了第一个统一标准,第二就是名称啊,操作名称都一样。第二呢是为了减少代码,还有这两个是一对应的,所以很多时候呃,你改一个,再增加一个这样的一对应上就非常方便了。 好,呃,发四 a p i 还呃这里面,对,这里还有呃后端开发框架,还有个放行抽象,我们这里大概给出两个一个实际的一个例子,你看我们这是截图里面,代码里面截图,这个是控制器,它传入了一个放行的这个想传了几个类型, 这就是我们标准。我们端内框架也差不多是类似的一个定义力提供一个类型,然后组建的类型,然后那个分页 dto 的 一个类型跟呃 dto 的 一个对象,以及呃这个常规的征删改查的那个标准的 呃那个 dto 类型啊,就这几个类型传进来,就我们通过构造化就传呃构造了一个器类的一个控制,并且这个信息传进起来之后呢,它一些接口也就是强类型化了。 好,它的数据访问层也是一样的,它也是要传入几个类型,这样我们通过这个配置 dto 可进行分页的一个处理。 外界类型我们可以做一些增生改查的一些关键的一个对应的一个啊类型的一个限定哈模型这个类型,这个是我们这个 直接访问数据库的时候,它对应的一个模型的一个对象类型了,这样子我们可以获得表的信息啊,以及相关的一个操作的一个便利性。 好,这个会可以实现。看代码的时候可以看到我们回到这里面可以看这 base control 了,我们大概结合的讲它就是这个东西。好, 我们会看到这里面它就提供了一个呃范型的一个定义,我们这里 促使一些标准的一个常规的一个接口,这个接口这个定义方式我们可以到时候参考一下, 利用我们这个判断是否存在那个他都在这里定义,这就是常规的那个发誓 api 的 一个定义方式了,就通过这种声明式的方式来定义它的类型。我们这里可能就是利用可能 id, 就 id 就是 一个这个组建类型,然后名称的标标识 还有 db 这个数据库默认它是直接构建的,它就是一个依赖式的一个东西,用完它就会会把它注销了后,不是就把它相当于丢掉 或者留在缓存里面重用,就是这种的一个模式啊。这个返回的这个统一的标准就是我们的这个返回的一个结果,把这个结果为绕的塞到这里面,就构建一个通用的返回的一个协议格式啊。 同样在那个 code 层,我们这里有一个叫 base code 安信,这个呢它也是通过跟那个之前讲的,它是通过发行的方式来进行一个定义, 然后实现我们这里面有一些接口的信息,我们到时候可以逐一的去看。这里可是花了大功夫的对各个常规的接口进行一个操作,每个接口都保证它比较 返回正确性啊,这个需要啊,统一测试好。嗯,这个就是我们对整个所有公用性的接口进行一个底层的一个处理了, 这个回头细看就行了,大概了解这两个机类,然后每你看所有的每个类类,他都会继承这个这个信息啊,这样的话我们很多常规的接口就不用再写了。你看这个其实这个数据 类型啊,或者说是数据四点它里面的信息,它是非接口是非常多,但是我们只需要定义一些特殊的接口就行了,常规的接口都是在这上面定义, 嗯,这就是我们用到的这里用到的一个换行接口的一个好的一个地方啊。还有就是 凡是 api 后端开发框架呢,它里面啊,这里另外刚才已经讲了,这块我们跳过就是继承关系的一个处理啊。还有个后端框架的一个多数据库支持我们啊, 跟他讲了 sql 它本身就是个很强大的 o m 库,它在我们呃提供 o m 库呢,它其也保留了底层数据库存储的一个呃 sql 操作的一个强大的控制力,我们可以通过呃 sql 代码跟数据库进行一个交互,不需要编辑呃 很多,它有它的模型操作方式,由于它进行了多数据多种数据库的抽象能力,我们可以很好的支持这种不同的数据库的对接吧。 还有它的 emv 的 配置,我们通过因为我们做了底层做了很多对接的一个优化的处理,那我们通过配置方式可以直接切换为不同的数据库引擎以及呃相关的操作模式,就很容易实现了。 这样子的话,我们在这个配置文件里面,这个就是它的 emv 的 一个配置文件中啊。关于数据库的部分,我们通过呃这个 db type 这个类型,我们实现呃不同的一个切换,这样子我们就实现我们不同数据库直接修改配置就可以了 啊。还有个异步操作,因为现在基本上所有呃对数据扣操作的用异步的话,它会更高效更快速的响应,因为它的 i o 存储,呃实现的响应是快的,很多的同步可能会有点阻塞啊,或者会 收干扰啊这个,但是异步呢,它可能很多时候我们要转换观念起来,使用起来就也很方便。好 啊,刚才讲了 skyelink 就是 一个强大的 o m 工具 o m 库,它比较它可以说是啊拍摄生态生态中最最成熟啊,也是最强大的 o m 空框架吧,当然肯定还有其他的,你如果,呃 是比较喜欢这个就用这个,大大多数人都会用这个,可能会比较比较熟悉一点,还有其他的一些 o m 工具,如果你历史原因也可以用其他的,这个问题不大啊。 呃,他的主要特点就是我们通过对象的印色推出,我们定一些模型就可以印色到实际的表里面去,还有他提供了一些自己的一些 c 口的表述的处理啊, 数据库抽象,刚才讲的他就为了兼容多种数据库,这样子的就方便,然后高性能就通过呃缓存呢易步啊这种方式来实现这种高性能的一个处理,还有个支持事务。有时候我们可能 对,特别是我们这种关系型的数据库,有些一些 c d 度的东西要统一保证的话,那我们需要增加一些事物的处理,这样对我们啊一些数据的唯一性的检查会比较好一些,这就是我们啊在这边的一些功能点啊。 好,我们前面讲了,因为 fast api 的 后端框架呢,它相当于是一种数据中心的模式,它就是通过 共用一个 web api 的 一个对接,那实现统一数据对接,呃,其他前端对接的一个模式,这就是我们大概我画的一个 u r m 图,就例如我们桌面端可能微微信拍选的,或者拍 qq 的 这种 啊,跨平台的桌面端,还有啊 b s 端,还有 h 五端,小程序端或者 electron 的 那个端 啊,还有其他都可以, inform 端子也可以对接,都一样的,它鞋口鞋底都遵循一样的话呢,操作起来都是差不多的啊。发 c p r, 我 们这里为了 我们知道我们开发的时候可能需要根据数据库相关信息申请进行一些生成, 那我们如果是全部是从头来,第二可能会容易写错。第二呢也是会很繁琐的一个功能,因为很多数据库的字段跟我们实际编写的一个类的属性,那可能是一一对应的,那这些东西就交给代码生成工具,因为我们这次上面也画了 很多功夫,让让它快速的生成,而且就是符合我们框架的一些标准。这样子呢,有相关的一些基层关系啊,以及相关的一些注示啊,以及相关的一些说明,那就非常方便。 离我们后端框架生成之后,它包括 api 端、数据访问端,还有 dto 跟呃斯柯尔柯米的模型端都进行一一并的生成,那这些生成之后我们再着着行的修改或者调整一下,那就可以了, 这是我们框架的一个特点啊,这是用代码生成工具生成的文件,我们可以看到这个文件的,基本上我们都跟那个一对应的,也可以看到 啊。第二第三步呢,就是我们在做开发环境啊,先录到这里。

ok, ok, 欢迎大家来到大鹏 ai 教育啊,那我们现在呢是 fast api 现代外部开发啊,第一章 啊,第一章里面呢第一个视频叫做现代外部概述啊,我呢是张大鹏,今天呢是二零二六年一月十四日。 好,那我们呢来分享一下这个内容,我们这个内容呢会提供这个笔记录播直播和一 v 一 私教的形式,现在大家看到的呢是这种短视频,短视频啊,我待会把短视频加进去, 从前外部还很小啊,也很简单,开发者呢把 php, html 和 my circle 调用,随意的塞进单个文件中,比如说,嗯,点 gsp, java 的 对吧,还有点 php 就是 典型的 php 的。 然后呢自豪的告诉所有人去看看他们的网站, 这是最开始的时候最简单的那种网站啊,但是随着时间推移啊,外部呢不断增长,页面数量达到数十亿甚至数万亿的级别啊,现在整个网络它正在变得越来越复杂, 最初的游乐场呢,逐渐演变成一个主题公园式的原宇宙 啊。在本章中呢,我将指出一些现代外部中变得愈发重要的领域,比如说服务与 api 并发分层,还有呢就是这个数据, 下一章呢将展示 python 在 这些方面能提供什么。之后呢,我们将深入 fast api 外部框架,看看它究竟能带来哪些能力。 好,那这个呢就是我们这个概述。好那嗯,希望大家喜欢这种形式,如果大家感觉还可以呢? 嗯,给我点赞,关注,评论。好,谢谢大家,大家有任何问题呢,也可以随时在我们的评论区留言。

想不想只用几分钟就搭一个功能超全的网页 api? 今天啊,我们就来聊聊一个叫 fast api 的 神器,看看它到底有多快多神奇。 咱们先来聊个痛点啊,写 api 文档是不是特别烦?每次改代码文档还得跟着改,简直是噩梦。但如果我跟你说,有这么个东西能让你彻底跟手动写文档说拜拜,怎么样?是不是有点心动了?来,咱们就揭晓答案。 好,废话不多说,咱们直接上手。第一步,安装,你可能以为得搞一堆复杂的配置吧,嘿, fast api 的 安装那叫一个简单,简单到你可能都不信, 就这两行命练搞定。第一行, pip install fast api, 这装呢,就是 fast api 这个框架本身,咱所有的魔法都靠它。 第二行呢,是 pip install uucorn。 uucorn 是 个啥呢?它是个跑得飞快的服务器,专门伺候 fast api 这种现代 python 应用的。你看,一个框架一个服务器齐活了,是不是特简单?安装完了,那接下来重头戏来了,携带码 这部分绝对能让你见识到什么叫大道至简。做好心理准备啊,你马上就要被这少的可怜的代码量给惊到了。行,咱们一行一行看啊,你可看好了,虽然我们拆开讲,但所有代码加起来也就那么几行。 首先,第一行, from fast api import fast api 很 简单嘛,就是把 fast api 的 核心功能那个 fast api 类给请进来。 然后呢,第二行, app 等于 fast api, 这就是在创建一个实力,你可以把它想象成我们 api 的 总指挥,我们给它起了个名字叫 app。 之后,所有的命令啊,都是通过这个 app 来下达的。 接着往下看,这一行是关键, at app 点 get, 这里可见号。看到这个 at 符号 at 了吗?这在拍子里叫装饰器, 你就可以把它当成一个贴纸,贴在函数头上,这张贴纸上写着, v f s p i。 下面这个函数是专门处理访问主页的 get 请求。那被贴了贴纸的函数是谁呢?就是它, a c d f root dot。 意思就是只要有人来访问咱们网站的根目录,这个函数里的代码就会自动跑起来。 哦,对了,你看前面这个 a sync 关键字,这可是个好东西,说明 fast api 从骨子里就只使一步,也是它性能那么猛的一个秘密。五, 那这个函数具体干了啥呢?就一行代码, return passage, hello 元,我们让它返回一个 python 字典。最妙的是什么呢?你不用管什么格式转换, fast api 会特别聪明地把它变成标准的 json 格式,再发给浏览器,搞定。 你看,一个完整的 a p i 就 这么写完了,是不是很简单?代码写完了,那他现在还只是静静地躺在文件里。接下来就是见证奇迹的时刻了,咱们得让他跑起来,让他活过来。 来,打开你的终端,撬下这行命令, uvorn main dot app reload。 我 给你解释一下啊, uvorn 就是 咱们刚才装的那个服务器。 main dot app 呢,是告诉服务器你去一个叫 main 的 文件里找到那个叫 app 的 总指挥。 最后那个 reload, 我 跟你说,这是开发时的神器,只要你改了代码,一保存,服务器自己就重启了,超级方便。 回车,当你看到终端里出现了这么一行字,告诉你, u v q 已经在 h t t p 杠一二七点零点零点一八千上跑起来了,恭喜你成功了,你的 api 已经不再是冷冰冰的代码了,它现在是一个活生生的正在你电脑上运行的服务了。 怎么样,到这儿为止,感觉是不是超爽,又快又简单?但别急,这还不是最厉害的,接下来要展示的才是 fast api 真正的大杀器,也是我开头卖的那个官字的答案。 说真的,这个功能我敢保证所有开发者第一次看到的时候反应都是,哇,因为它真的能帮你省下大把大把的时间,让你和同事合作起来也更顺畅。所以,这到底是啥呢? 噔噔噔噔!就是这个,你什么都不用做,只要在浏览器里,在你刚才那个地址后面加上杠 box, 再访问一下。 咚!一个颜值超高,功能超全,还能直接在线调试的 api 文档就这么自动生成了,你可以在上面直接点一点测试你的 api。 最关键的是,为了实现这个,我们一行额外的代码都没写,它就这么白送给你了。 好了,咱们来简单回顾一下今天我们体验到的 fast api 有 多厉害呢?首先性能快如闪电,其次写代码超级简单。最后,也是最让人拍案决绝的就是这个白送的全自动交互式文档。 那么最后问题来了,现在你手里有了这么一个又强大又简单的神器,你会用它来做什么呢?想象一下你的下一个项目,或者你现在的工作会因为它发生什么样奇妙的变化,这还真挺值得期待的。

我们先安装服务文件运行所需要的库, 点击这里我们分别输入两个依赖库的名字,第一个安装 安装, 安装好后我们新建文件,写入以下内容,这就是我们的服务文件, 按打开终端,输入一下命令,运行成功, 这时我们的服务文件已经运行好了,我们在浏览器直接访问一下,链接 好,我们可以看到打印出来以下内容,说明我们的服务文件运行成功。