点击上方“菜鸟学Python”,选择“星标”公众号
超级无敌干货第一时间推给你!!!
Flask 是一个轻量级的可定制框架,使用 Python 语言编写,框架特点主要包括灵活、轻便、安全且容易上手。小型团队在短时间内就可以完成功能丰富的 Web 接口服务的实现。
今天它的对手 FastApi 框架来啦!FastAPI是一种现代,高性能的Web框架:
支持异步编码;
框架源码全部基于标准的 Python 3.6 类型声明;
100%类型注释的代码库;
框架也有灵活、轻便、安全的特点;
和 Flask 的安装方式一样,都是可以使用 pip 安装。直接在终端执行命令 pip install "fastapi[all]", 即可安装 FastApi 和它所需要的一些依赖。
有这样的需求:编写一个API 接口,接收 POST 请求发送过来的数据,对参数进行处理,并返回,使用 Flask 开发接口的代码如下:
看起来似乎很简洁了,用 postman 发个请求看看效果,如图所示:
2).使用 FastApi 开发上述需求
代码风格和 Flask 很相似,都是把框架类实例化成了一个 app 对象,这个 app 作为一个装饰器使用。
请求 Flask 编写的接口时,请求参数 num 的值忘记传了,代码就会报错,例如:
为了保证接口的健壮性,必须为接口加上一些参数校验的代码,增加参数校验后代码变得复杂了。
虽然 Flask 可以让你用很少的代码写出一个可以正常运行的项目,但是写成一个可以正常使用的项目还需要你写更多的代码。
2).使用 postman 请求 FastApi 编写的接口
去掉请求参数 num ,效果是这样的,我们来看一下
FastApi 编写接口会智能的返回错误信息,提示 num 字段缺失,未传参,保证了接口的健壮性。参数校验由 FastApi 框架自己完成,不用我们再写额外的代码进行参数校验。
网站性能对于普通用户来说,最直接的体现就是响应时间。从开发人员的角度看,网站性能的指标主要有并发数和响应时间。
FastApi 框架正如其名字一样,它是可用的最快的 Python web 框架之一。
上图的性能对比基准是基于每秒响应数,每个请求20个查询,明显看出 FastApi 接口响应速度比 Flask 快很多。
由于 Flask 本身是不支持异步编码,所以它一般的部署方式和同步的框架 Django 是一样的,都是用 uwsgi 部署。
FastAPI 是个异步框架,所以它是支持 async/await 异步编程语法的,比如下面这段代码:
本地和生产环境中,FastApi 都是通过 uvicorn 运行的,运行指令都是 uvicorn main:app —reload ,其中main 是脚本名称。uvicorn 一个性能非常高 的 ASGI 服务器,基于 uvloop 和 httptools 构建。
在项目开发中,Web 项目的前后端分离开发需要由前后端工程师共同定义接口。编写接口文档,之后大家都根据这个接口文档进行开发,同时也方便后期人员查看、维护。
Flask 框架本身并没有自带 API 文档,需要借助第三方插件实现,生成API接口文档的第三方插件还是蛮多,但是对选择困难症的朋友不是很友好。而 FastApi 框架本身自带生成交互式的 API 接口文档,对于选择困难症的朋友是很友好的,直接使用框架自带的Api交互式文档即可。
对于 FastApi 框架,访问http://127.0.0.1:8000/docs, 看到的是 swagger-ui类型的文档:
如果访问 http://127.0.0.1:8000/redoc , 看到的是redoc风格的接口文档:
众所周知,Python 的变量随时可以被赋值,且能赋值为不同的类型,由于不做任何类型检查,有些问题直到运行才显现出来,或者线上运行时才能暴露出问题。
而类型注释可以对函数的参数进行类型注解,也可以对函数的返回值进行类型注解。使用类型注释保证了更少的错误。
细心的同学会发现,小编在 FastApi 代码中写了一些基于标准的 Python 3.6+ 的类型注释声明,对一些请求参数的类型做了限定,比如:
Flask 框架源码并没有使用现代化的类型注释声明。
FastApi 框架源码有 100% 类型注释的代码库,并且全部基于标准的Python 3.6+ 的类型声明。小编找了 FastApi 一段源码,每个请求参数和返回参数都做了类型注释的声明:
有兴趣的小伙伴,下次在做后端项目的时候,可以试试FastAPI,也许效果会让你大吃一惊哦!希望本篇的分享对大家有帮助,欢迎大家三连!
近期八大热门:
发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片!
盗墓热再起!我爬取了6万条《重启之极海听雷》的评论,发现了这些秘密
用Python一键生成炫酷九宫格图片,火了朋友圈
菜鸟也疯狂!8分钟用Python做一个酷炫的家庭随手记
Github获8300星!用Python开发的一个命令行的网易云音乐
一道Python面试题,硬是没憋出来,最后憋出一身汗!卧槽!Pdf转Word用Python轻松搞定!教你6招,不错的Python代码技巧!由 菜鸟学Python 原班人马打造的公众号:程序员GitHub,现已正式上线!接下来我们将会在该公众号上,为大家分享GitHub上优质的开源神器,程序员圈的趣事,坚持每天一篇原创文章的输出,感兴趣的小伙伴可以关注一下哈!点这里,领取新手福利