fromfastapiimportFastAPIapp=FastAPI()# 按照顺序匹配路径,如果/users/{user_id}放在/users/me前面,会将/users/me匹配给/users/{user_id}
@app.get("/users/me")asyncdefread_user_me():return{"user_id":"the current user"}@app.get("/users/{user_id}")asyncdefread_user(user_id:str):return{"user_id":user_id}
fromenumimportEnumfromfastapiimportFastAPIclassModelName(str,Enum):alexnet="alexnet"resnet="resnet"lenet="lenet"app=FastAPI()@app.get("/models/{model_name}")asyncdefget_model(model_name:ModelName):ifmodel_name==ModelName.alexnet:return{"model_name":model_name,"message":"Deep Learning FTW!"}ifmodel_name.value=="lenet":return{"model_name":model_name,"message":"LeCNN all the images"}return{"model_name":model_name,"message":"Have some residuals"}
可选参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
fromtypingimportOptionalfromfastapiimportFastAPIapp=FastAPI()@app.get("/users/{user_id}/items/{item_id}")asyncdefread_user_item(user_id:int,item_id:str,q:Optional[str]=None,short:bool=False):item={"item_id":item_id,"owner_id":user_id}ifq:item.update({"q":q})ifnotshort:item.update({"description":"This is an amazing item that has a long description"})returnitem
fromtypingimportOptionalfromfastapiimportFastAPI,Queryapp=FastAPI()@app.get("/items/")asyncdefread_items(q:Optional[str]=Query(None,min_length=3,max_length=50,regex="^fixedquery$")):# 如果参数是必须的,去掉Optional就行,并且None改为...
results={"items":[{"item_id":"Foo"},{"item_id":"Bar"}]}ifq:results.update({"q":q})returnresults@app.get("/items/{item_id}")asyncdefread_items(*,item_id:int=Path(...,title="The ID of the item to get",ge=0,le=1000),q:str,size:float=Query(...,gt=0,lt=10.5)):# 也可以做数值校验,size是大于0且小于10.5的数值
results={"item_id":item_id}ifq:results.update({"q":q})returnresults
fromtypingimportOptionalfromfastapiimportBody,FastAPIfrompydanticimportBaseModel,Fieldapp=FastAPI()classItem(BaseModel):name:strdescription:Optional[str]=Field(None,title="The description of the item",max_length=300)price:float=Field(...,gt=0,description="The price must be greater than zero")tax:Optional[float]=None@app.put("/items/{item_id}")asyncdefupdate_item(item_id:int,item:Item=Body(...,embed=True)):results={"item_id":item_id,"item":item}returnresults