pexels_temp

FastAPI ile Hızlı API Geliştirme

FastAPI ile Hızlı API Geliştirme: 42 Derste Ustalığa Yolculuk

Modern web geliştirme dünyasında, API’ler (Uygulama Programlama Arayüzleri) uygulamalar arasındaki iletişimi sağlayan temel taşlardır. Hızlı, güvenilir ve ölçeklenebilir API’ler oluşturmak, başarılı bir projenin olmazsa olmazıdır. İşte tam bu noktada FastAPI devreye giriyor. FastAPI, Python ile yüksek performanslı API’ler oluşturmak için modern, hızlı (yüksek performanslı) bir web framework’üdür. Bu makale serisinde, 42 derste FastAPI’nin derinliklerine inecek ve pratik örneklerle ustalaşmanızı sağlayacağız.

İçindekiler

  1. FastAPI Nedir? Temel Kavramlar
  2. Neden FastAPI? Avantajları ve Dezavantajları
  3. Kurulum ve Ortam Hazırlığı
  4. İlk API’mizi Oluşturma: ‘Hello World’
  5. Veri Serileştirme ve Doğrulama (Pydantic)
  6. Request Body Kullanımı ve Validasyonu
  7. Path Parametreleri ve Sorgu Parametreleri
  8. HTTP Durum Kodları ve İstisnalar
  9. Bağımlılık Yönetimi (Dependency Injection)
  10. Güvenlik ve Kimliklendirme (Authentication & Authorization)
  11. Test Yazma ve Uygulama
  12. Otomatik API Dokümantasyonu (Swagger UI ve ReDoc)
  13. Middleware Kullanımı
  14. CORS (Cross-Origin Resource Sharing)
  15. Statik Dosyalar ve Şablonlar
  16. Veritabanı Entegrasyonu (SQLAlchemy ve AsyncORM)
  17. Asenkron Programlama (async/await)
  18. Gelişmiş Bağımlılıklar ve Örnekler
  19. Arka Plan Görevleri
  20. Olay Yöneticisi (Events)
  21. WebSockets Entegrasyonu
  22. GraphQL ile Entegrasyon
  23. Gelişmiş Güvenlik Stratejileri
  24. Rate Limiting (Hız Sınırlaması)
  25. Caching Mekanizmaları
  26. Monitorleme ve Loglama
  27. API Versiyonlama
  28. Dokümantasyon Özelleştirme
  29. Performans Optimizasyonu İpuçları
  30. Dağıtım Yöntemleri (Docker, Heroku, AWS vb.)
  31. Container Orkestrasyonu (Kubernetes)
  32. Mikroservis Mimarisi ve FastAPI
  33. CI/CD (Sürekli Entegrasyon/Sürekli Dağıtım)
  34. API Geçitleri (API Gateways)
  35. Serverless Mimariler ve FastAPI
  36. Gerçek Dünya Projeleri ile Pratik Uygulamalar
  37. FastAPI Topluluğu ve Kaynakları
  38. API Geliştirmede Güncel Trendler
  39. Sık Sorulan Sorular (SSS)
  40. Karşılaşılan Sorunlar ve Çözüm Önerileri
  41. Sonuç: FastAPI ile API Geliştirmenin Gücü
  42. Ek Kaynaklar

1. FastAPI Nedir? Temel Kavramlar

FastAPI, Python 3.6+ tabanlı, modern ve hızlı bir web framework’üdür. Temel amacı, geliştiricilerin hızlı, güvenilir ve ölçeklenebilir API’ler oluşturmasına yardımcı olmaktır. FastAPI, ASGI (Asynchronous Server Gateway Interface) standardını kullanarak asenkron programlama desteği sunar, bu da performansı önemli ölçüde artırır. Ayrıca, otomatik veri doğrulama, serileştirme ve interaktif API dokümantasyonu gibi özellikler sunar.

2. Neden FastAPI? Avantajları ve Dezavantajları

FastAPI’nin sunduğu avantajlar şunlardır:

  • Hız: ASGI sayesinde yüksek performans ve eş zamanlılık.
  • Kolay Kullanım: Basit ve sezgisel sözdizimi, hızlı öğrenme eğrisi.
  • Otomatik Dokümantasyon: Swagger UI ve ReDoc ile otomatik API dokümantasyonu.
  • Veri Doğrulama: Pydantic ile otomatik veri doğrulama ve serileştirme.
  • Bağımlılık Yönetimi: Gelişmiş bağımlılık yönetimi sistemi.
  • Standardizasyon: OpenAPI ve JSON Schema standartlarına uyum.

Dezavantajları ise şunlar olabilir:

  • Yeni Teknoloji: Diğer popüler framework’lere göre daha yeni olması, topluluk desteğinin henüz tam olgunlaşmaması.
  • Öğrenme Eğrisi: Asenkron programlama ve Pydantic gibi kavramlara aşina olmayanlar için başlangıçta zorlayıcı olabilir.

3. Kurulum ve Ortam Hazırlığı

FastAPI’yi kullanmaya başlamak için öncelikle Python 3.6 veya üzeri bir sürümün kurulu olduğundan emin olun. Ardından, aşağıdaki komutları kullanarak gerekli paketleri yükleyin:


pip install fastapi uvicorn

fastapi, FastAPI framework’ünün kendisidir. uvicorn ise ASGI sunucusudur ve FastAPI uygulamalarını çalıştırmak için gereklidir.

4. İlk API’mizi Oluşturma: ‘Hello World’

Aşağıdaki kodu main.py adlı bir dosyaya kaydedin:


from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"Hello": "World"}

Ardından, aşağıdaki komutu kullanarak uygulamayı çalıştırın:


uvicorn main:app --reload

Bu komut, uygulamayı 8000 portunda başlatacaktır. Tarayıcınızda http://localhost:8000 adresine giderek API’nizi test edebilirsiniz. “{\”Hello\”: \”World\”}” çıktısını görmelisiniz.

5. Veri Serileştirme ve Doğrulama (Pydantic)

Pydantic, Python’da veri doğrulama ve serileştirme için kullanılan bir kütüphanedir. FastAPI, Pydantic ile entegre çalışarak API’lerinizde veri girişlerini ve çıktılarını kolayca doğrulamanızı sağlar.


from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    description: str | None = None
    price: float
    tax: float | None = None

@app.post("/items/")
async def create_item(item: Item):
    return item

Bu örnekte, Item adlı bir Pydantic modeli tanımladık. Bu model, API’ye gönderilen verilerin name, description, price ve tax alanlarını içermesini bekler. FastAPI, bu modeli kullanarak gelen verileri otomatik olarak doğrulayacak ve hatalı verileri reddedecektir.

6. Request Body Kullanımı ve Validasyonu

Önceki örnekte Item modeli kullanarak request body’sini nasıl doğrulayacağımızı gördük. FastAPI, request body’sindeki verilerin doğru formatta olduğundan emin olmak için Pydantic modellerini kullanır.

7. Path Parametreleri ve Sorgu Parametreleri

Path parametreleri, URL’nin bir parçası olarak gönderilen parametrelerdir. Sorgu parametreleri ise URL’nin sonuna eklenen parametrelerdir.


from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}

Bu örnekte, item_id bir path parametresidir ve URL’nin bir parçası olarak gönderilir. q ise bir sorgu parametresidir ve URL’nin sonuna ?q=değer şeklinde eklenir.

8. HTTP Durum Kodları ve İstisnalar

HTTP durum kodları, sunucunun isteğe nasıl yanıt verdiğini gösteren kodlardır. FastAPI, HTTP durum kodlarını kolayca yönetmenizi ve özel istisnalar oluşturmanızı sağlar.


from fastapi import FastAPI, HTTPException

app = FastAPI()

items = {"foo": "The Foo Wrestlers"}

@app.get("/items/{item_id}")
async def read_item(item_id: str):
    if item_id not in items:
        raise HTTPException(status_code=404, detail="Item not found")
    return {"item": items[item_id]}

Bu örnekte, eğer item_id listede yoksa, 404 HTTP durum kodu ile bir HTTPException oluşturulur.

9. Bağımlılık Yönetimi (Dependency Injection)

FastAPI, gelişmiş bir bağımlılık yönetimi sistemine sahiptir. Bağımlılık yönetimi, kodunuzun daha modüler, test edilebilir ve bakımı kolay olmasını sağlar.


from fastapi import FastAPI, Depends

app = FastAPI()

async def common_parameters(q: str | None = None, skip: int = 0, limit: int = 100):
    return {"q": q, "skip": skip, "limit": limit}

@app.get("/items/")
async def read_items(commons: dict = Depends(common_parameters)):
    return commons

Bu örnekte, common_parameters adlı bir bağımlılık tanımladık. Bu bağımlılık, read_items fonksiyonuna enjekte edilir. Bu sayede, read_items fonksiyonu, q, skip ve limit parametrelerine kolayca erişebilir.

10. Güvenlik ve Kimliklendirme (Authentication & Authorization)

FastAPI, API’lerinizi güvenli hale getirmek için çeşitli kimliklendirme ve yetkilendirme yöntemlerini destekler. Örneğin, OAuth2, JWT (JSON Web Token) ve API anahtarları gibi yöntemleri kullanabilirsiniz.

11. Test Yazma ve Uygulama

Test yazmak, uygulamanızın doğru çalıştığından emin olmanın en iyi yoludur. FastAPI, test yazmayı kolaylaştırmak için çeşitli araçlar ve yöntemler sunar. Örneğin, pytest ve httpx gibi kütüphaneleri kullanarak testlerinizi yazabilirsiniz.

12. Otomatik API Dokümantasyonu (Swagger UI ve ReDoc)

FastAPI, otomatik olarak interaktif API dokümantasyonu oluşturur. Swagger UI ve ReDoc, API’nizi keşfetmek ve test etmek için kullanabileceğiniz iki farklı arayüz sunar.

Uygulamanızı çalıştırdıktan sonra, tarayıcınızda http://localhost:8000/docs adresine giderek Swagger UI’yi ve http://localhost:8000/redoc adresine giderek ReDoc’u görüntüleyebilirsiniz.

13. Middleware Kullanımı

Middleware, gelen ve giden isteklere müdahale etmek için kullanılan bileşenlerdir. FastAPI, middleware’leri kolayca tanımlamanızı ve uygulamanıza entegre etmenizi sağlar. Örneğin, her isteği loglamak veya kimlik doğrulama işlemlerini gerçekleştirmek için middleware kullanabilirsiniz.

14. CORS (Cross-Origin Resource Sharing)

CORS, web tarayıcılarının farklı kaynaklardan gelen isteklere izin verme veya reddetme mekanizmasıdır. FastAPI, CORS ayarlarını kolayca yapılandırmanızı sağlar.

15. Statik Dosyalar ve Şablonlar

FastAPI, statik dosyaları (örneğin, CSS, JavaScript, resimler) ve şablonları (örneğin, HTML) sunmanızı sağlar. Bu sayede, API’nizle birlikte statik içerikleri de kolayca yönetebilirsiniz.

16. Veritabanı Entegrasyonu (SQLAlchemy ve AsyncORM)

FastAPI, SQLAlchemy ve AsyncORM gibi popüler veritabanı araçlarıyla entegre çalışır. Bu sayede, veritabanı işlemlerinizi kolayca yönetebilir ve verilerinizi güvenli bir şekilde saklayabilirsiniz.

17. Asenkron Programlama (async/await)

FastAPI, asenkron programlama desteği sunar. async ve await anahtar kelimelerini kullanarak, uzun süren işlemleri (örneğin, veritabanı sorguları, ağ istekleri) bloklamadan gerçekleştirebilirsiniz. Bu, uygulamanızın performansını önemli ölçüde artırır.

18. Gelişmiş Bağımlılıklar ve Örnekler

FastAPI’nin bağımlılık yönetimi sistemi, daha karmaşık senaryoları da destekler. Örneğin, bağımlılıkları zincirleme bağlayabilir veya koşullu bağımlılıklar tanımlayabilirsiniz.

19. Arka Plan Görevleri

FastAPI, arka planda çalıştırılması gereken görevleri kolayca yönetmenizi sağlar. Örneğin, e-posta gönderme, veri işleme veya loglama gibi işlemleri arka plan görevleri olarak tanımlayabilirsiniz.

20. Olay Yöneticisi (Events)

FastAPI, olay yöneticisi kullanarak uygulamanızdaki olaylara tepki vermenizi sağlar. Örneğin, bir kullanıcı oluşturulduğunda veya bir dosya yüklendiğinde belirli işlemleri tetikleyebilirsiniz.

21. WebSockets Entegrasyonu

FastAPI, WebSockets protokolünü destekler. WebSockets, gerçek zamanlı iletişim gerektiren uygulamalar için idealdir (örneğin, sohbet uygulamaları, oyunlar). FastAPI ile WebSockets entegrasyonu oldukça kolaydır.

22. GraphQL ile Entegrasyon

FastAPI, GraphQL ile entegre edilebilir. GraphQL, API’nizden hangi verileri istediğinizi belirtmenizi sağlayan bir sorgu dilidir. Bu, gereksiz veri transferini önler ve performansı artırır.

23. Gelişmiş Güvenlik Stratejileri

FastAPI, API’lerinizi daha güvenli hale getirmek için çeşitli güvenlik stratejileri sunar. Örneğin, CORS, CSRF (Cross-Site Request Forgery) ve XSS (Cross-Site Scripting) gibi saldırılara karşı önlemler alabilirsiniz.

24. Rate Limiting (Hız Sınırlaması)

Rate limiting, API’nize yapılan istek sayısını sınırlamanızı sağlar. Bu, kötü niyetli kullanıcılardan veya aşırı kullanımdan kaynaklanan performansı düşüşlerini önler.

25. Caching Mekanizmaları

Caching, sık erişilen verileri geçici olarak saklayarak API’nizin performansını artırmanıza yardımcı olur. FastAPI, çeşitli caching mekanizmalarını destekler.

26. Monitorleme ve Loglama

Uygulamanızın performansını izlemek ve hataları tespit etmek için monitorleme ve loglama önemlidir. FastAPI, çeşitli monitorleme ve loglama araçlarıyla entegre edilebilir.

27. API Versiyonlama

API’nizde değişiklikler yaptığınızda, eski sürümleri desteklemek ve yeni sürümleri yayınlamak için API versiyonlama kullanmanız gerekebilir. FastAPI, API versiyonlamayı kolayca yönetmenizi sağlar.

28. Dokümantasyon Özelleştirme

FastAPI’nin otomatik olarak oluşturduğu API dokümantasyonunu özelleştirebilirsiniz. Örneğin, açıklamalar ekleyebilir, örnek istekler ve yanıtlar sağlayabilir veya dokümantasyonun görünümünü değiştirebilirsiniz.

29. Performans Optimizasyonu İpuçları

FastAPI uygulamanızın performansını artırmak için çeşitli optimizasyon ipuçları ve teknikleri kullanabilirsiniz. Örneğin, veritabanı sorgularını optimize edebilir, caching kullanabilir veya asenkron programlamayı etkin bir şekilde kullanabilirsiniz.

30. Dağıtım Yöntemleri (Docker, Heroku, AWS vb.)

FastAPI uygulamanızı çeşitli platformlarda dağıtabilirsiniz. Örneğin, Docker kullanarak konteynerize edebilir, Heroku’da veya AWS’de barındırabilirsiniz.

31. Container Orkestrasyonu (Kubernetes)

Container orkestrasyonu, konteynerize edilmiş uygulamaların dağıtımını, ölçeklenmesini ve yönetimini kolaylaştırır. Kubernetes, en popüler container orkestrasyon platformlarından biridir. FastAPI uygulamanızı Kubernetes üzerinde kolayca çalıştırabilirsiniz.

32. Mikroservis Mimarisi ve FastAPI

Mikroservis mimarisi, bir uygulamayı küçük, bağımsız hizmetlere bölmeyi amaçlar. FastAPI, mikroservisler oluşturmak için ideal bir framework’tür.

33. CI/CD (Sürekli Entegrasyon/Sürekli Dağıtım)

CI/CD, kod değişikliklerinizi otomatik olarak test etme, entegre etme ve dağıtma sürecidir. FastAPI uygulamanız için CI/CD pipeline’ları oluşturarak, yazılım geliştirme sürecinizi hızlandırabilir ve kalitesini artırabilirsiniz.

34. API Geçitleri (API Gateways)

API geçitleri, API’nizin önünde duran ve istekleri yönlendiren, kimlik doğrulayan, rate limiting uygulayan ve diğer çeşitli görevleri gerçekleştiren bir bileşendir.

35. Serverless Mimariler ve FastAPI

Serverless mimariler, sunucu yönetimini ortadan kaldırır ve sadece kullandığınız kaynaklar için ödeme yapmanızı sağlar. FastAPI, serverless fonksiyonlar olarak çalıştırılabilir.

36. Gerçek Dünya Projeleri ile Pratik Uygulamalar

FastAPI’yi kullanarak çeşitli gerçek dünya projeleri geliştirebilirsiniz. Örneğin, bir e-ticaret API’si, bir blog API’si veya bir sosyal medya API’si oluşturabilirsiniz.

37. FastAPI Topluluğu ve Kaynakları

FastAPI’nin geniş ve aktif bir topluluğu vardır. Sorularınızı sormak, yardım almak veya katkıda bulunmak için çeşitli topluluk kaynaklarını kullanabilirsiniz (örneğin, GitHub, Stack Overflow, Discord).

38. API Geliştirmede Güncel Trendler

API geliştirme dünyası sürekli değişiyor ve gelişiyor. Güncel trendleri takip ederek, API’lerinizi daha modern, güvenli ve performanslı hale getirebilirsiniz.

39. Sık Sorulan Sorular (SSS)

FastAPI ile ilgili sık sorulan soruların cevaplarını bulabileceğiniz bir bölüm.

40. Karşılaşılan Sorunlar ve Çözüm Önerileri

FastAPI kullanırken karşılaşabileceğiniz sorunlar ve bu sorunlara yönelik çözüm önerileri.

41. Sonuç: FastAPI ile API Geliştirmenin Gücü

FastAPI’nin sunduğu avantajlar ve API geliştirme sürecine katkıları özetlenir.

42. Ek Kaynaklar

FastAPI hakkında daha fazla bilgi edinmek için kullanabileceğiniz ek kaynaklar (örneğin, resmi dokümantasyon, blog yazıları, video eğitimleri).

Leave A Comment

Your email address will not be published. Required fields are marked *