版本要求
Python 3.6+
安装库
$ pip install fastapi
$ pip install uvicorn
入门例子
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
如果是异步,可以这么写
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
启动方式
$ uvicorn main:app --reload --port 18080
uvicorn main:app 命令指:
- main: main.py 文件(也可理解为Python模块).
- app: main.py 中app = FastAPI()语句创建的app对象.
- --reload: 在代码改变后重启服务器,只能在开发的时候使用
- 默认端口是8000,可以使用
--port来指定其他端口
启动后输出:
INFO: Uvicorn running on http://127.0.0.1:18080 (Press CTRL+C to quit)
INFO: Started reloader process [19071]
INFO: Started server process [19091]
INFO: Waiting for application startup.
INFO: Application startup complete.
可以看到服务已经启动,访问路径是http://127.0.0.1:18080
检查是否服务政策
打开你的浏览器,输入 http://127.0.0.1:18000
你将会看见JSON响应:
{"hello": "world"}
查看生成API的文档
-
Swagger UI风格文档:
打开你的浏览器,输入 http://127.0.0.1:18080/docs
-
ReDoc风格文档
打开你的浏览器,输入 http://127.0.0.1:18080/redoc
可选的依赖
- Pydantic提供:
ujson - 更快的JSON
email_validator - 电子邮件的验证
- Starlette提供:
requests - 如果你想要使用TestClient, 需要导入requests.
aiofiles - 如果你想使用FileResponse or StaticFiles, 需要导入aiofiles.
jinja2 - 如果你想使用默认的模板配置,需要导入jinjia2.
python-multipart -如果要使用request.form()支持表单“解析”,则为必需。
itsdangerous -“SessionMiddleware”支持需要。
pyyaml - 如果需要 SchemaGenerator 支持, 则为必要.
graphene -如果需要 GraphQLApp 支持, 则为必要.
ujson - 如果你想使用 UJSONResponse, 则为必要.
- FastAPI / Starlette提供:
uvicorn - 加载和提供应用程序的服务器.
- 一次性全部安装
pip3 install fastapi[all]