依赖
FastApi站在巨人的肩膀之上
Starlette
负责web部分Pydantic
负责数据部分
安装
pip install fastapi
pip install uvicorn
示例
创建
创建一个main.py
文件并写入以下内容
from typing import Optional
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: Optional[str] = None):
return {"item_id": item_id, "q": q}
运行
通过以下命令运行服务器
uvicorn main:app --reload
查看效果
- http://127.0.0.1:8000/items/5?q=somequery
- 交互式API文档: http://127.0.0.1:8000/docs
- 可选的API文档: http://127.0.0.1:8000/redoc
示例升级
现在修改 main.py
文件来从 PUT
请求中接收请求体。
我们借助 Pydantic 来使用标准的 Python 类型声明请求体。
from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
is_offer: Optional[bool] = None
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[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}