fastapi故名思义,这一款框架特别适合做后端api的开发。
对于同类竞品有django和flask。
django是一个全量框架,在传统web开发时代,旨在快速交付一个成品。django有功能强大的admin后台管理系统,且内置的用户及权限模块,另外就是内建的orm非常完善。同时传统网站开发的表单,过滤器等,还有自己的模板引擎等。缺点就是django是一个自己闭环的体系,若想突破它的体系,则代价比较大。比如你想引入像mongo这样的nosql就比较费劲。
flask的亮点的微内核,主要是针对django的弱点,可以任意选用自己喜欢的组件来搭配。从社区来看,基本上flask就是对标django做了各种各样的组件,如果用flask搭建一个比较复杂的web应用之后,会发现和django越来越像。——还不如直接使用django省事。
fastapi是前后端后离时代的产物。它官网的slogan是“高性能,易于学习,高效编码,生产可用”。
生产可用不算什么特别,只因它是新框架,所以要强调一下。
重点是高性能,易于学习,高效编码。
号称性能可以比肩go,最快的web框架,主要是受益于它是异步框架。
安装:
开发环境的话,pip install fastapi[all]
如果是生产环境,直接pip install fastapi即可,然后再安装uvicorn作用服务器。
pip install uvicorn[standard]
main.py:
from fastapi import FastAPI
app = FastAPI()
@app.get('/')
def index():
return {'message': 'hello Fastapi!'}
#这里非常灵活,可以返回dict,也可以是字符串,也可以是一个list。
uvicorn main:app --reload
在当前目录下执行如上命令:
即可以跑起来了,而且在代码变更时自动加载。
调试模式——这个更适合我们
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get('/')
def index():
return {'message': '你好 Fastapi!'}
if __name__ == '__main__':
uvicorn.run('main:app', host="0.0.0.0", port=8000, reload=True)
这样可以直接从代码启动,并可以打断点和单步操作等。
内置对swagger的良好支持。
直接在url后面加docs或者redoc。