FastAPI 學習之路(二十三)用類作為依賴的注入
阿新 • • 發佈:2021-10-18
我們先看一個簡單的demo。
from typing import Optional from fastapi import Depends, FastAPI app = FastAPI() fake_items_db = [{"city": "beijing"}, {"city": "shanghai"}, {"city": "heze"}] class CommonQueryParams: def __init__(self, desc: Optional[str] = None, skip: int = 0, limit: int = 100): self.desc= desc self.skip = skip self.limit = limit @app.get("/items/") def read_items(commons: CommonQueryParams = Depends(CommonQueryParams)): response = {} if commons.desc: response.update({"desc": commons.desc}) items = fake_items_db[commons.skip : commons.skip + commons.limit] response.update({"items": items}) return response
我們去實現了一個類,然後這個類呢,初始化方法方法,我們有介紹,跳過,限制等條件呢,我們在實現介面的時候,去注入下這個類,我們看下結果;
那麼我們看下,我們當增加下,我們注入的類裡面需要的引數的時候,看下介面返回的
其實用類實現也沒有那麼難,有固定的格式。
我們只需要按照這個格式去實現即可。
我們有兩種寫法
1.commons: CommonQueryParams = Depends(CommonQueryParams)
2.commons: CommonQueryParams = Depends()
實現的效果都是一樣的。
方法二的寫法更加簡單,我們去看下介面文件如何展示的。
正常也會帶著這些選填的引數。
我們之前文章有分享過選填必填的引數,我們現在的是否也可以使用呢,我們可以看下,我們必須在依賴注入的時候,必須需要引數desc,我們看下是否可以。
from fastapi import Depends, FastAPI app = FastAPI() fake_items_db = [{"city": "beijing"}, {"city": "shanghai"}, {"city": "heze"}] class CommonQueryParams: def __init__(self, desc: str , skip: int = 0, limit: int = 100): self.desc = desc self.skip = skip self.limit = limit @app.get("/items/") def read_items(commons: CommonQueryParams = Depends()): response = {} if commons.desc: response.update({"desc": commons.desc}) items = fake_items_db[commons.skip : commons.skip + commons.limit] response.update({"items": items}) return response
我們看下,我們不填寫的時候,是否是給我們返回的異常,我們預期是介面返回異常
正常填寫
可以正常返回。那麼我們用python的類去實現依賴,其實也是很簡單的。之前的一些方法都是可以正常的放在類裡面去實現的。
文章首發在公眾號,歡迎關注。