1. 程式人生 > 其它 >FastAPI 學習之路(二十三)用類作為依賴的注入

FastAPI 學習之路(二十三)用類作為依賴的注入

我們先看一個簡單的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的類去實現依賴,其實也是很簡單的。之前的一些方法都是可以正常的放在類裡面去實現的。

文章首發在公眾號,歡迎關注。