FastAPI 入门使用非常简单。本篇主要介绍安装、服务启动、路由配置、数据响应、文档生成等基础用法。
安装
你可以直接通过 pip install fastapi[all] 安装所有必要的组件。
也可以单独一个一个安装:
pip install fastapi
pip install uvicorn
在这个里面,uvicorn 是一个 Web 服务器,负责把用户的请求发给 fastapi 程序。fastapi 框架本身是不带服务器的。
启动服务
通过 uvicorn 命令行 uvicorn 脚本名:app对象 启动服务:
uvicorn demo_01_quickstart:app
reload 参数方便调试加上 --reload 参数。
当使用 reload 参数以后,当你的程序有任何改动,服务器会自动重启,不需要手动重启服务器,调试会更加方便。
除了通过命令行方式启动,你也可以通过 python 程序运行服务器:
from fastapi import FastAPI
import uvicorn
app = FastAPI()
if __name__ == '__main__':
uvicorn.run(app)
这种情况要使用 reload 则需要这样运行:
uvicorn.run('module:app', reload=True)
第一个参数要以字符串形式传递,否则会报错。
配置路由
fastapi 的用法深受 flask 的影响,对于绑定路由采用的通常是装饰器的形式。
@app.get('/')
def index():
return "hello"
当在客户端访问 '/' 网址时,fastapi 会自动调用 index 函数,返回 "hello" 这个字符串。
2,如果想对同一个路由设置多个请求方式,可以通过 app.api_route() 设置。
@app.api_route('/', methods=['GET', 'POST'])
def index():
return "hello"
3, 当然也可以像 django 那样采用集中注册
def index():
return "hello"
app.add_api_route('/', index, methods=['POST'])
返回 JSON 格式数据
如果需要返回 JSON 格式的数据特别简单,只需要在试图函数后面返回对应的 python 数据类型就可以了。
@app.get('/')
def index():
return {"msg": "Welcome", "data": "user"}
得到 JSON 数据:
返回列表:
@app.get('/')
def index():
return ['user1', 'user2', 'user3']
得到的结果:
查看文档
只要是编写了路由,都可以通过访问 /docs 和 /redoc 获取到文档。
/docs 是基于 swagger ui,类似于这样:
可以点击 Try it out 测试该接口,速度非常快。
/redoc 的文档看起来回更漂亮一点。值得一提的是,视图函数当中 docstring 可以直接在文档中显示出来。