FastAPI აპლიკაციები მართავენ კონფიგურაციას pydantic-settings-ის (BaseSettings) საშუალებით — ეს კლასი კითხულობს კონფიგ გარემოს ცვლადებიდან (და .env ფაილებიდან) ვალიდაციისა და ტიპის კონვერტაციის მეთოდით, საიდუმლოებებს კოდიდან დაშორებით ინახავს და უზრუნველყოფს, რომ კონფიგ სწორია სტარტაპის დროს.
პარამეტრების განსაზღვრა
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
app_name: str = "My API"
database_url: str # required — must be provided
secret_key: str # required (a secret)
debug: bool = False
max_connections: int = 10
class Config:
env_file = ".env" # also read from a .env file
settings = Settings() # reads & VALIDATES env vars at startup
BaseSettings ავტომატურად კითხულობს თითოეულ ფილდს შესაბამის გარემოს ცვლადიდან (მაგ. DATABASE_URL), ახდენს ტიპების კონვერტაციას ("true" → bool, "10" → int), და ვალიდირებს — გამოტოვებული აუცილებელი მნიშვნელობა ან არასწორი ტიპი დაუყოვნებლივ ვერ მოხდება სტარტაპის დროს ნათელი შეცდომის სიტყვებით (ადრე წარუმატებლობა).
პარამეტრების გამოყენება (დამოკიდებულების ინექციის მეთოდით)
from functools import lru_cache
from fastapi import Depends
@lru_cache # create the Settings once (cached)
def get_settings():
return Settings()
@app.get("/info")
def info(settings: Settings = Depends(get_settings)):
return {"app": settings.app_name, "debug": settings.debug}
პარამეტრების შენახული დამოკიდებულების მეთოდით ინექტირება მათ ტესტირებად ხდის (ტესტებში გადაფარვა) და უზრუნველყოფს მხოლოდ ერთი ინსტანციის არსებობას.
.env ფაილი და საიდუმლოებები
# .env — local config, GITIGNORED (never commit secrets)
DATABASE_URL=postgresql://localhost/mydb
SECRET_KEY=dev-secret
DEBUG=true
✓ Keep secrets in env vars / .env (gitignored); commit a .env.example documenting keys
✓ In production, inject config via the platform's environment / secret manager
✓ Validation at startup catches misconfiguration immediately (not deep in a request)
რატომ არის მნიშვნელოვანი
სათანადო პარამეტრების მართვა არის ორივე ოპერაციული აუცილებლობა (აპლიკაციებს სჭირდებათ სხვადსხვა კონფიგ ქვედა/გამოცდის/წარმოებაში) და უსაფრთხოების მოთხოვნილება (საიდუმლოებები როგორიცაა მონაცემთა ბაზის URL-ები და გასაღებები რთავიყო არასდროს წყაროს კოდეში — ხშირი, სერიოზული დარღვევა).
Pydantic-ის BaseSettings უზრუნველყოფს იდიომატურ FastAPI გამოსავალს, და მისი გაცნობიერება მნიშვნელოვანი ყოველდღიური ცოდნაა.
მისი მთავარი უპირატესობები: კონფიგის წაკითხვა გარემოს ცვლადებიდან (საიდუმლოებებს კოდიდან თავი აქცევს, თორმეტი-ფაქტორის მეთოდი) ავტომატური ტიპის კონვერტაციისა და ვალიდაციით — ამიტომ არასწორი კონფიგურაცია სწრაფად ვერ ხდება სტარტაპის დროს ნათელი შეცდომით, ვიდრე დაბნეული რান-ტაიმის წარუმატებლობა.
დამოკიდებულების ინექციის (პარამეტრების ტესტირებადი და სინგლტონი) და gitignored .env ფაილების გამოყენების პრაქტიკა ადგილობრივი დეველოპმენტისთვის, ეს გამოვიყენებთ უსაფრთხო, ვალიდირებული, გარემოთი შესაბამო კონფიგურაციით.
პარამეტრების განსაზღვრა, მათი DI მეთოდით გამოყენება და საიდუმლოებების უსაფრთხო მართვა ფუნდამენტალურია წარმოებაზე მზად FastAPI აპლიკაციების შესაქმნელად.
