Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >卧槽!居然有比Flask更好用更简单的框架

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

作者头像
龙哥
修改于 2020-09-27 01:57:52
修改于 2020-09-27 01:57:52
4.3K00
代码可运行
举报
文章被收录于专栏:Python绿色通道Python绿色通道
运行总次数:0
代码可运行

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
代码运行次数:0
运行
复制
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python 异步 ASGI 服务器及框架
在 Python3.5 之后增加 async/await 特性之后,异步编程变得异常火爆,越来越多开发者投入异步的怀抱。
Python编程与实战
2020/03/19
3.3K0
Python 异步 ASGI 服务器及框架
FastAPI学习-环境准备与基础入门
FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。
wencheng
2022/04/18
7480
FastAPI学习-环境准备与基础入门
FastAPI学习笔记
FastAPI是一个现代、快速(高性能)、用于构建APIs的Web框架,基于Python 3.6+构建,并使用了Python的类型提示(type hints)来验证数据、转换数据以及生成JSON Schema和OpenAPI文档。由于其出色的性能和易用性,FastAPI在近年来逐渐受到了开发者的青睐。(学习该框架强烈建议有python基础)
光影zero
2025/01/23
2820
python web框架之FastApi
FastAPI是一种现代、快速的Python web框架,它提供了一组强大的工具和功能,使得构建RESTful APIs变得更加容易和快速。在本文中,我们将介绍FastAPI的主要特点和优势,以及如何使用它来构建高效的API。
疯狂的KK
2023/03/17
1.3K0
python web框架之FastApi
FastAPI 作为集大成者,它的灵感来自哪里?
人生苦短,我用 Python。 在看到 FastAPI 在首期「OSC 开源软件趋势榜」名列前茅,作为一个 Pythoner,顿时对它产生了浓厚的兴趣,于是立即开始了 FastAPI 体验之旅。
donghui
2020/04/22
2.3K0
FastAPI 作为集大成者,它的灵感来自哪里?
Github 火热的 FastAPI 库,站在了这些知名库的肩膀上
花下猫语:如果你还不知道 FastAPI 是什么/有多好,请先看看我之前转载的 这篇文章,然后再阅读本文。今天分享的是一篇译文,译自 FastAPI 的官方文档,作者主要是将它与其它框架/库作了对比,介绍了 FastAPI 从它们身上吸收的一些亮点。阅读本文可以加深对 FastAPI 的理解,开阔对相关库的认知,更能知道优秀的开发者是如何从其它项目中吸收养分的。阅读愉快!
Python猫
2020/03/13
5.6K0
(入门篇)简析Python web框架FastAPI——一个比Flask和Tornada更高性能的API 框架
用官方的话来说,FastAPI 是一种现代,快速(高性能)的 Web 框架,基于标准Python 类型提示使用 Python 3.6+ 构建 API
用户7466307
2020/06/17
2.2K0
FastAPI框架诞生的缘由(上)
原文:https://fastapi.tiangolo.com/alternatives/
somenzz
2020/11/25
2.5K0
FastAPI or Flask?从用户出发,才是王道
前段时间,Milvus demo 使用的服务框架从 Flask 切换为 FastAPI,这一改动引发了社区小伙伴们讨论:为什么要改服务框架?改了以后有什么好处?为了解答社区小伙伴们的疑问,Zilliz 数据工程师云梅写下这篇文章。
Zilliz RDS
2021/11/23
3.8K0
使用FastAPI框架快速构建高性能的api服务
使用FastAPI可以非常快速的构建出一套高性能的api服务。下面通过实战演示一下:
TalkPython
2019/05/24
8.6K0
用它5分钟以后,我放弃用了四年的 Flask
有一个非常简单的需求:编写一个 HTTP 接口,使用 POST 方式发送一个 JSON 字符串,接口里面读取发送上来的参数,对其中某个参数进行处理,并返回。
青南
2020/02/19
1.7K0
用它5分钟以后,我放弃用了四年的 Flask
《深入探秘:从底层搭建Python微服务之FastAPI与Docker部署》
FastAPI作为一款现代、快速的Web框架,在Python微服务开发领域独树一帜。它基于Python 3.6+的类型提示功能,融合了Starlette和Pydantic的优势,具备诸多令人瞩目的特性。
程序员阿伟
2025/05/25
3060
《深入探秘:从底层搭建Python微服务之FastAPI与Docker部署》
使用(Python)FastAPI快速构建你的后端接口服务
FastAPI是一个基于 Python 的后端框架,该框架鼓励使用 Pydantic 和 OpenAPI (以前称为 Swagger) 进行文档编制,使用 Docker 进行快速开发和部署以及基于 Starlette 框架进行的简单测试。
我被狗咬了
2020/03/19
9.6K0
FastAPI从入门到实战(0)——初识FastAPI
FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。
MinChess
2022/12/27
3.9K0
FastAPI入门
FastAPI是一个现代、快速的Python Web框架,用于快速构建API。它基于 Pydantic 和 Starlette,使得代码更加简洁且易于绶护。
@小森
2024/07/25
2550
FastAPI入门
Django,Flask ,FastAPI 怎么选?
首先我们达成一个共识,框架是用来帮助我们提升效率,节省时间,避免处理那些低级细节的,如果能达到这个目标,就是一个合适的框架。选择合适的框架,会事半功倍。
somenzz
2021/04/30
6.1K0
从 Flask 切到 FastAPI 后,起飞了!
本文翻译自 Moving from Flask to FastAPI, 作者:Amal Shaji
Python编程与实战
2024/03/04
1.8K0
从 Flask 切到 FastAPI 后,起飞了!
FastAPI框架诞生的缘由(下)
原文:https://fastapi.tiangolo.com/alternatives/
somenzz
2020/11/25
2.6K0
FastAPI学习-1.环境准备与基础入门
FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。
上海-悠悠
2022/03/03
8940
FastAPI学习-1.环境准备与基础入门
快速Mock接口数据的工具--FastApi
fastapi 官网介绍如下: FastAPI framework, high performance, easy to learn, fast to code, ready for production. FastAPI框架,高性能,易于学习,代码快速,可投入生产 安装 版本 python3.6+ pip install fastapi pip install uvicorn 快速上手案例 创建一个main.py文件 from fastapi import FastAPI app = FastAPI
胡八万
2022/05/16
1.2K0
快速Mock接口数据的工具--FastApi
相关推荐
Python 异步 ASGI 服务器及框架
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验