Yaygın Bağımlılıkları Ekleme
Veritabanı oturumları, kullanıcı kimlik doğrulaması veya uç noktalar arasında paylaşılan yapılandırma için yaygın bağımlılıkları uygulayın.
Yaygın Bağımlılıkları Ekleme, CoddyKit'te ücretsiz bir FastAPI Backend Development Bootcamp dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, FastAPI Backend Development Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.
Intro to Common Dependencies
FastAPI'de bağımlılıklar oldukça güçlüdür. Mantığı paylaşmanıza, kaynakları yönetmenize ve kodunuzu temiz tutmanıza yardımcı olurlar.
Yaygın bağımlılıklar, birçok API uç noktasında yeniden kullandığınız işlevler veya sınıflardır. Bu, tekrarlayan kodları önler ve uygulamanızın bakımını ve test edilmesini kolaylaştırır.
Bunları API'niz için yeniden kullanılabilir yapı taşları olarak düşünebilirsiniz.
Injecting Shared Configuration
Birçok uygulama, API anahtarları veya veritabanı URL'leri gibi küresel ayarlara ihtiyaç duyar. Yapılandırmayı enjekte ederek, bu ayarlara küresel değişkenlere başvurmak zorunda kalmadan herhangi bir uç noktada kolayca erişebilirsiniz.
Bu, yapılandırmanızı esnek ve güncellenmesi kolay tutar.
Demo: Simple Config Dependency
Basit bir ayarlar sözlüğü döndüren bir bağımlılık oluşturalım. Gerçek bir uygulamada bu, Pydantic'in BaseSettings öğesi kullanılarak ortam değişkenlerinden yüklenebilir.
from fastapi import FastAPI, Depends
app = FastAPI()
# This function acts as our dependency
def get_settings():
return {"app_name": "CoddyKit API", "version": "1.0.0"}
@app.get("/info")
def read_info(settings: dict = Depends(get_settings)):
return {"message": f"Welcome to {settings['app_name']} v{settings['version']}"}
# To run this:
# 1. Save as main.py
# 2. Run 'uvicorn main:app --reload'
# 3. Go to http://127.0.0.1:8000/infoDatabase Session Management
Backend API'ler için yaygın bir görev, bir veritabanı ile etkileşim kurmaktır. Her istek genellikle kendine özgü bir veritabanı "oturumuna" veya bağlantısına ihtiyaç duyar.
Bu oturumları her uç noktada (endpoint) manuel olarak yönetmek zahmetli ve hataya açıktır. Bir bağımlılık (dependency), bunları sizin için otomatik olarak oluşturabilir ve kapatabilir.
Demo: Database Session Dependency
Burada basitleştirilmiş bir get_db bağımlılığı örneği bulunmaktadır. Gerçek bir uygulamada bu, SQLAlchemy gibi bir ORM kullanarak bir veritabanına bağlanacaktır.
Buradaki anahtar nokta yield anahtar kelimesidir!
from fastapi import FastAPI, Depends
from typing import Generator
app = FastAPI()
# This simulates a database session.
# In a real app, this would be a SQLAlchemy session.
class MockDBSession:
def __init__(self):
print("Opening DB session...")
def close(self):
print("Closing DB session...")
def query(self, item_id: int):
return {"id": item_id, "name": f"Item {item_id}"}
def get_db() -> Generator:
db = MockDBSession()
try:
yield db # This is where the endpoint gets the 'db' object
finally:
db.close() # This runs after the request is finished
@app.get("/items/{item_id}")
def read_item(item_id: int, db: MockDBSession = Depends(get_db)):
# The 'db' object is provided by the dependency
return db.query(item_id)
# To run this:
# 1. Save as main.py
# 2. Run 'uvicorn main:app --reload'
# 3. Go to http://127.0.0.1:8000/items/1The Magic of `yield`
get_db fonksiyonumuzdaki yield anahtar kelimesi çok önemlidir.
yield'dan önceki kod, uç nokta (endpoint) fonksiyonundan önce çalışır. Bu, kurulum içindir (örneğin, bir veritabanı bağlantısı açmak).yield'dan sonraki kod, uç nokta fonksiyonundan ve onun yanıtından sonra çalışır. Bu, sonlandırma içindir (örneğin, bağlantıyı kapatmak).
Bu kalıba "yield içeren bağımlılık" veya "bağlam yöneticisi bağımlılığı" denir.
Injecting User Authentication
Çoğu API'nin, bir isteği kimin yaptığını bilmesi gerekir. Kimlik doğrulama bağımlılıkları, istek başlıklarından (API anahtarı veya JWT belirteci gibi) kullanıcı bilgilerini çıkarır ve bunları uç noktalarınız için erişilebilir hale getirir.
Bu, kimlik doğrulama mantığınızı ayrı tutar ve birçok rotada yeniden kullanılabilir olmasını sağlar.
Demo: Current User Dependency
İşte mevcut kullanıcıyı almayı simüle eden temel bir bağımlılık. Gerçek bir uygulamada bu, istek başlıklarındaki bir belirtecin doğrulanmasını gerektirirdi.
Kullanıcı kimliği doğrulanmamışsa, isteği erkenden durdurmak için bir HTTPException yükseltebilir.
from fastapi import FastAPI, Depends, HTTPException, status
from typing import Optional
app = FastAPI()
class User:
def __init__(self, username: str, email: Optional[str] = None):
self.username = username
self.email = email
# This dependency simulates fetching the current user
def get_current_user(token: str = "some_valid_token") -> User:
# In a real app, 'token' would come from request headers
# and be validated against a database or auth service.
if token != "some_valid_token":
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Invalid authentication credentials",
headers={"WWW-Authenticate": "Bearer"},
)
return User(username="jane_doe", email="jane@example.com")
@app.get("/me")
def read_current_user(current_user: User = Depends(get_current_user)):
return {"username": current_user.username, "email": current_user.email}
# To run this:
# 1. Save as main.py
# 2. Run 'uvicorn main:app --reload'
# 3. Go to http://127.0.0.1:8000/meChaining & Reusing Dependencies
Bağımlılıklar diğer bağımlılıklara da bağlı olabilir! Bu, karmaşık mantığın daha küçük, yönetilebilir parçalara bölünmesine olanak tanır.
Örneğin, bir "mevcut yönetici kullanıcı" bağımlılığı, önce "mevcut kullanıcı" bağımlılığına dayanabilir ve ardından o kullanıcının yönetici yetkilerine sahip olup olmadığını kontrol edebilir.
Bu modülerlik, FastAPI'nin bağımlılık enjeksiyonunun temel bir gücüdür.
Check Your Understanding
Aşağıdaki FastAPI bağımlılığını göz önünde bulundurun:
from fastapi import HTTPException, status
def check_api_key(api_key: str = "SECRET_KEY"):
if api_key != "VALID_API_KEY":
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail="Invalid API Key"
)
return True
Eğer bir uç nokta (endpoint) Depends(check_api_key) kullanıyorsa ve doğru API_KEY olmadan bir istek gelirse ne olur?
Common Dependencies: Key Takeaways
FastAPI'de yaygın bağımlılıkların nasıl enjekte edileceğini inceledik:
- Yapılandırma: Uygulama ayarlarını uç noktalar arasında kolayca paylaşın.
- Veritabanı Oturumları: Düzgün kurulum ve sonlandırma için
yieldkullanarak istek başına veritabanı bağlantılarını yönetin. - Kullanıcı Kimlik Doğrulaması: Kullanıcıları tanımlama ve doğrulama mantığını merkezileştirin.
Bağımlılıklar, genel kaygıları ana uç nokta mantığınızdan ayrı tutarak temiz, yeniden kullanılabilir ve test edilebilir kodu teşvik eder.
Sıkça Sorulan Sorular
“Yaygın Bağımlılıkları Ekleme” dersi ücretsiz mi?
Evet — “Yaygın Bağımlılıkları Ekleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve FastAPI Backend Development Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.
“Yaygın Bağımlılıkları Ekleme” dersinde ne öğreneceğim?
Veritabanı oturumları, kullanıcı kimlik doğrulaması veya uç noktalar arasında paylaşılan yapılandırma için yaygın bağımlılıkları uygulayın. FastAPI Backend Development Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
FastAPI Backend Development Bootcamp öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te FastAPI Backend Development Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Yaygın Bağımlılıkları Ekleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu FastAPI Backend Development Bootcamp dersinde kod yazıp çalıştırabilir miyim?
Evet. Her FastAPI Backend Development Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- FastAPI'de Bağımlılıkları Anlama
- Yaygın Bağımlılıkları Ekleme
- Sınıf Tabanlı ve Yield Bağımlılıkları
- Genel Bağımlılıklar ve Alt Bağımlılıklar