簡體   English   中英

Pydantic 模式邏輯

[英]Pydantic schema logic

所以,我正在構建一個 API 來與我的個人葡萄酒標簽 collections 數據庫進行交互。 據我了解,pydantic model 的目的是充當發送到 API 的模式的“驗證者”。 因此,我添加 label 的 pydantic 模式如下:

from pydantic import BaseModel
from typing import Optional

class WineLabels(BaseModel):
    name: Optional[str]
    type: Optional[str]
    year = Optional[int]
    grapes = Optional[str]
    country = Optional[str]
    region = Optional[str]
    price = Optional[float]
    id = Optional[str]

所有字段都不會自動更新。 這等於 sqlalchemy model 因為我想手動添加所有字段。

所以我的問題是,假設我想創建一個按 ID 搜索的調用和另一個按名稱搜索的調用。 我不認為應該應用這些模式。 我應該創建另一個架構嗎? 我應該創建一個這樣的嗎?:

class SearchWineLabel(WineLabels):
      id: str

是否應該為已經存在的模式無法實現的每個目的創建模式?

抱歉,但我無法理解其背后的邏輯。 謝謝!!

如果您想按 id 或 name 搜索,我不確定您是否甚至需要模式 - 在這些情況下,一個或多個 get 參數通常就足夠了(並且通常在語義上更好)。

在任何情況下,模式都將針對端點預期接收的內容而編寫,而不是通過使用以其他方式包含該字段的通用模式。 將模式視為給定資源和端點的輸入/輸出定義。

您通常希望有不同的模式來添加和更新(因為添加需要存在某些字段,而更新可能允許 null 或任何位置的缺失字段)。

Pydantic 模式將允許您在不編寫代碼的情況下表達這些差異,它將反映在 /docs 下生成的 api 文檔中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM