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