from fastapi import fastapi
async def root():
return
fastapi繼承starlette,因此在starlette中的所有可呼叫的物件在fastapi中可以直接引用
from fastapi import fastapi
這個路徑告訴fastapi,該裝飾器下的方法是用來處理路徑是「/」的get請求
async def root():
return
from fastapi import fastapi
async def read_item(item_id):
return
路徑中的item_id將會被解析,傳遞給方法中的item_id。請求會返回如下結果:
也可以在方法中定義引數型別:
from fastapi import fastapi
async def read_item(item_id: int):
return
繼續請求會返回
此時的item_id是int型別的3,而不是string型別,這是因為fastapi在解析請求時,自動根據宣告的型別進行了解析
如果請求,此時會返回:
]
}
這是因為foo並不能轉換成int型別。請求也會出現上述錯誤
所有的資料型別驗證,都是通過pydantic完成的如果想對路徑引數做乙個預定義,可以使用enum:
from enum import enum
from fastapi import fastapi
class modelname(str, enum):
alexnet = "alexnet"
resnet = "resnet"
lenet = "lenet"
async def get_model(model_name: modelname):
if model_name == modelname.alexnet:
return
if model_name.value == "lenet":
return
return
開啟
除此之外,假如想接收乙個路徑引數,它本身就是乙個路徑,就像/files/,而這個file_path是home/johndoe/myfile.txt時,可以寫成/files/:
from fastapi import fastapi
async def read_user_me(file_path: str):
return
openapi本身不支援在路徑引數包含路徑,但是可以當作starlette內部的乙個使用方法此時訪問返回:
如果將路徑改為/files/,會返回:
這裡依舊是乙個例子:
from fastapi import fastapi
fake_items_db = [, , ]
async def read_item(skip: int = 0, limit: int = 10):
return fake_items_db[skip : skip + limit]
嘗試訪問返回:
[,]
嘗試訪問返回:
[,,]
由於我們在定義方法的時候,分別賦予skip和limit預設值,當不新增querystring時,會使用預設值。當然,我們也可以將預設值賦值為none:
from fastapi import fastapi
async def read_item(item_id: str, q: str = none):
if q:
return
return
值得放心的一點是,fastapi很聰明,他知道引數來自**~假如,我們不給引數預設值會發生什麼情況呢?這裡還是乙個例子:
from fastapi import fastapi
async def read_user_item(item_id: str, needy: str):
item =
return item
繼續請求會發現,返回報錯:
]}
FastAPI 高階知識 六 啟動 關閉事件
我們可以在應用啟動和關閉的時候自定義事件處理器。注意,只有主應用才可以這麼做。啟動事件 通過 startup 事件來宣告乙個應當在應用啟動之前執行的函式。from fastapi import fastapi items startup async defstartup event items fo...
FastAPI學習 2 fastapi引數詳解
1.檢視fastapi原始碼 引數如下 from fastapi import fastapi from starlette.responses import jsonresponse 此型別不可少 from starlette.routing import route request引數不可少 a...
FastAPI學習 RequestBody請求體
get操作不能使用requestbody,post put delete patch可以。請求體使用前,必須要引入pydantic庫中的basemodel類進行宣告,傳入前建立相應的資料模型 from fastapi import fastapi from pydantic import basem...