Mock
我個人理解就是為了偽造返回結果的東西,MockServe通常說的就是介面未開放完成但是現在需要呼叫,所以無論是通過轉發還是直接訪問這個url,其結果基本就是自己定義的 當然做仔細點就是 給個型別其自動生成對應型別資料
預覽圖
使用技術棧
FastAPI + tortoise-orm + sqlite3
實現原理
Path引數實現,使用者訪問時如果這個Path引數存在資料庫,對應請求方法也是對的那麼就可以訪問
核心程式碼
方法一:個人最開始實現的方法
async def mock(request: Request, url: str = Path(...)):
try:
mocks = await models.MockApi.filter(path=url, status=True).first()
return mocks.body if mocks.method.upper() == request.method else ServeNotFount()
except Exception as e:
return ServeNotFount()
app.add_api_route(
"/mock/{url}",
endpoint=mock,
methods=[
"post",
"get",
"delete",
"put"],
include_in_schema=False
)
方法二,https://gitee.com/ran_yong 糾正 @app.api_route
@app.api_route("/mock/{url}", methods=["post", "get", "delete", "put"], include_in_schema=False)
async def mock(request: Request, url: str = Path(...)):
try:
mocks = await models.MockApi.filter(path=url, status=True, method=request.method.lower()).first()
return mocks.body
except Exception as e:
return ServeNotFount()
視訊說明
原始碼地址
Gitee: https://gitee.com/zy7y/FastAPIMockServe.git
Github: https://github.com/zy7y/FastAPIMockServe