前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >卧槽!居然有比Flask更好用更简单的框架

卧槽!居然有比Flask更好用更简单的框架

作者头像
龙哥
修改2020-09-27 09:57:52
2.6K0
修改2020-09-27 09:57:52
举报
文章被收录于专栏:Python绿色通道Python绿色通道

Flask 是一个轻量级的可定制框架,使用 Python 语言编写,框架特点主要包括灵活、轻便、安全且容易上手。小型团队在短时间内就可以完成功能丰富的 Web 接口服务的实现。

今天它的对手 FastApi 框架来啦!FastAPI是一种现代,高性能的Web框架:

  • 支持异步编码;
  • 框架源码全部基于标准的 Python 3.6 类型声明;
  • 100%类型注释的代码库;
  • 框架也有灵活、轻便、安全的特点;

一.FastApi 如何安装

和 Flask 的安装方式一样,都是可以使用 pip 安装。直接在终端执行命令 pip install "fastapi[all]", 即可安装 FastApi 和它所需要的一些依赖。

二.Flask VS FastApi

01.代码风格对比
1).使用 Flask 开发一个简单的需求:

有这样的需求:编写一个API 接口,接收 POST 请求发送过来的数据,对参数进行处理,并返回,使用 Flask 开发接口的代码如下:

看起来似乎很简洁了,用 postman 发个请求看看效果,如图所示:

2).使用 FastApi 开发上述需求

代码风格和 Flask 很相似,都是把框架类实例化成了一个 app 对象,这个 app 作为一个装饰器使用。

02.接口健壮性对比
1).使用 postman 请求 Flask 编写的接口

请求 Flask 编写的接口时,请求参数 num 的值忘记传了,代码就会报错,例如:

为了保证接口的健壮性,必须为接口加上一些参数校验的代码,增加参数校验后代码变得复杂了

虽然 Flask 可以让你用很少的代码写出一个可以正常运行的项目,但是写成一个可以正常使用的项目还需要你写更多的代码

2).使用 postman 请求 FastApi 编写的接口

去掉请求参数 num ,效果是这样的,我们来看一下

FastApi 编写接口会智能的返回错误信息,提示 num 字段缺失,未传参,保证了接口的健壮性。参数校验由 FastApi 框架自己完成,不用我们再写额外的代码进行参数校验。

三.框架性能对比

网站性能对于普通用户来说,最直接的体现就是响应时间。从开发人员的角度看,网站性能的指标主要有并发数和响应时间。

FastApi 框架正如其名字一样,它是可用的最快的 Python web 框架之一。

上图的性能对比基准是基于每秒响应数,每个请求20个查询,明显看出 FastApi 接口响应速度比 Flask 快很多

1).Flask 部署方式

由于 Flask 本身是不支持异步编码,所以它一般的部署方式和同步的框架 Django 是一样的,都是用 uwsgi 部署。

2).FastApi部署方式

FastAPI 是个异步框架,所以它是支持 async/await 异步编程语法的,比如下面这段代码:

本地和生产环境中,FastApi 都是通过 uvicorn 运行的,运行指令都是 uvicorn main:app —reload ,其中main 是脚本名称。uvicorn 一个性能非常高 的 ASGI 服务器,基于 uvloop 和 httptools 构建。

四.API接口文档对比

在项目开发中,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风格的接口文档:

5.框架现代化对比

众所周知,Python 的变量随时可以被赋值,且能赋值为不同的类型,由于不做任何类型检查,有些问题直到运行才显现出来,或者线上运行时才能暴露出问题

而类型注释可以对函数的参数进行类型注解,也可以对函数的返回值进行类型注解。使用类型注释保证了更少的错误。

细心的同学会发现,小编在 FastApi 代码中写了一些基于标准的 Python 3.6+ 的类型注释声明,对一些请求参数的类型做了限定,比如:

1).Flask 框架的源码:

Flask 框架源码并没有使用现代化的类型注释声明。

2).FastApi 框架的源码:

FastApi 框架源码有 100% 类型注释的代码库,并且全部基于标准的Python 3.6+ 的类型声明。小编找了 FastApi 一段源码,每个请求参数和返回参数都做了类型注释的声明:

代码语言:javascript
复制
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python绿色通道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Flask 是一个轻量级的可定制框架,使用 Python 语言编写,框架特点主要包括灵活、轻便、安全且容易上手。小型团队在短时间内就可以完成功能丰富的 Web 接口服务的实现。
    • 一.FastApi 如何安装
      • 二.Flask VS FastApi
        • 01.代码风格对比
        • 02.接口健壮性对比
        • 三.框架性能对比
        • 四.API接口文档对比
        • 5.框架现代化对比
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档