fastapi是高性能的web框架。他的主要特色是:python
- 快速编码
- 减小人为bug
- 直观
- 简易
- 具备交互式文档
- 基于API的开放标准(并与之彻底兼容):OpenAPI(之前称为Swagger)和JSON Schema。
技术背景:python3.6+、Starlette、Pydanticweb
官方文档地址:https://fastapi.tiangolo.com/api
安装
pip install fastapi pip install uvicorn
quick start
# 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}
或者app
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
看到以下提示,证实运行成功框架
main: 表示app所在文件名 app:FastAPI实例 reload:debug模式,能够自动重启
试着请求http://127.0.0.1:8000/items/5?q=somequery,会看到以下返回async
{"item_id": 5, "q": "somequery"}
交互文档
试着打开http://127.0.0.1:8000/docs 性能
API文档
试着打开http://127.0.0.1:8000/redoc ui
update
经过上面的例子,咱们已经用fastapi完成了第一个web服务,如今咱们再添加一个接口编码
from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class Item(BaseModel): name: str price: float is_offer: bool = None @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} @app.put("/items/{item_id}") def update_item(item_id: int, item: Item): return {"item_name": item.name, "item_id": item_id}
此时会发现,服务自动重启了,这是由于咱们在启动命令后添加了--reload。再次查看文档,发现一样发生了改变。 到此,你已经能够快速的用fastapi搭建起服务了~spa