1.表单格式
from fastapi import Form
app = FastAPI()
@app.post('/login')
def user_login(username: str = Form(...), password: str = Form(...)):
"""pip install python-multipart"""
return {"username": username, "password": password}
2.json格式
class CityInfo(BaseModel):
name: str = Field(..., example="Beijing")
country: str
country_code: Optional[str] = None
country_population: int = Field(default=800, title="人口数量", description="国家的人口数量", ge=800)
class Config:
schema_extra = {
"example": { # 响应示例
"name": "Shanghai",
"country": "China",
"country_code": "CN",
"country_population": 140000000
}
}
@users.post("/add-city")
def city_info(city: CityInfo):
print(city.country)
return city
3.嵌套格式
class CityInfo(BaseModel):
name: str = Field(..., example="Beijing")
country: str
country_code: Optional[str] = None
country_population: int = Field(default=800, title="人口数量", description="国家的人口数量", ge=800)
class Config:
schema_extra = {
"example": {
"name": "Shanghai",
"country": "China",
"country_code": "CN",
"country_population": 140000000
}
}
class Data(BaseModel):
city: List[CityInfo] = None
date: date
confirmed: int = Field(ge=0, description="确诊数", default=0)
deaths: int = Field(ge=0, description="死亡数", default=0)
recovered: int = Field(ge=0, description="痊愈数", default=0)
@users.put("request_body/nested")
def nested_models(data: Data):
return data