FastAPI ile Tanışın: Modern, Hızlı ve Tip Güvenli API’ler Geliştirmek

Modern web uygulamalarının kalbinde hızlı, ölçeklenebilir ve güvenilir API’ler yer alır. Python ekosisteminin en popüler framework’lerinden biri olan FastAPI, hem geliştirici deneyimini ön planda tutması hem de inanılmaz performansıyla kısa sürede standart haline geldi. Peki, FastAPI’yi bu kadar güçlü kılan nedir ve sıfırdan bir API nasıl inşa edilir?

Ne Yaptık? Bir Envanter Yönetim Sistemi

Bu projede, temel bir Envanter Yönetim API’si (Inventory Management API) oluşturduk. Uygulama, ürünlerin listelenmesi, belirli bir ürünün ID üzerinden getirilmesi ve yeni ürünlerin sisteme eklenmesi gibi temel REST fonksiyonlarını yerine getiriyor.

Ancak burada asıl odak noktamız sadece bir “envanter listesi” yapmak değil; FastAPI’nin sunduğu modern mimariyi deneyimlemekti. Geleneksel senkron (synchronous) yapılardan farklı olarak, FastAPI ASGI (Asynchronous Server Gateway Interface) tabanlıdır. Bu sayede async ve await anahtar kelimeleriyle, sunucumuz bir isteğin tamamlanmasını beklerken diğer isteklere yanıt verebilir. Bu, özellikle yüksek trafikli uygulamalarda performansı dramatik şekilde artırır.

Kodun Anatomisi

Projeyi incelerken karşımıza çıkan üç ana sütun var: Uygulama örneği, veri doğrulama şemaları ve yönlendirme (routing) mekanizması.

1. FastAPI Uygulama Örneği

app = FastAPI() satırı ile uygulamanın kalbini oluşturuyoruz. Burada verdiğimiz title ve description gibi parametreler sadece süs değil; FastAPI bunları kullanarak otomatik olarak etkileşimli bir dokümantasyon sayfası (Swagger UI) üretir.

2. Pydantic ile Tip Güvenliği ve Doğrulama

FastAPI’nin en büyük sırlarından biri Pydantic kütüphanesini kullanmasıdır. ItemSchema sınıfı ile gelen verinin formatını önceden belirliyoruz:

  • sku: En az 3 karakter olmalı.
  • price: Mutlaka 0’dan büyük (gt=0.0) bir sayı olmalı.

Eğer kullanıcı hatalı bir veri gönderirse, FastAPI daha fonksiyonumuz çalışmadan otomatik olarak bir 422 Unprocessable Entity hatası döndürür. Bu, manuel hata kontrolü zahmetini ortadan kaldırır.

3. Asenkron Yönlendirmeler

@app.get ve @app.post dekoratörleri ile URL yollarını tanımlıyoruz. async def kullanarak fonksiyonlarımızı asenkron hale getiriyoruz.

İşte projenin kilit noktalarını içeren sadeleştirilmiş kod bloğu:

from fastapi import FastAPI, HTTPException, status
from pydantic import BaseModel, Field

app = FastAPI(title="Envanter API")

# Veri Doğrulama Şeması
class ItemSchema(BaseModel):
    sku: str = Field(..., min_length=3)
    name: str = Field(..., min_length=1)
    price: float = Field(..., gt=0.0)

# Bellek içi basit veritabanı
DB = {1: {"id": 1, "sku": "KEY-01", "name": "Klavye", "price": 500.0}}

@app.get("/items/{item_id}")
async def get_item(item_id: int):
    if item_id not in DB:
        raise HTTPException(status_code=404, detail="Ürün bulunamadı")
    return DB[item_id]

@app.post("/items", status_code=status.HTTP_201_CREATED)
async def create_item(payload: ItemSchema):
    new_id = max(DB.keys()) + 1
    item = {"id": new_id, **payload.dict()}
    DB[new_id] = item
    return item

Nasıl Çalıştırılır?

FastAPI’yi çalıştırmak için sadece framework’ün kendisi yetmez; onu ayağa kaldıracak bir ASGI sunucusuna (örneğin Uvicorn) ihtiyaç vardır.

  1. Bağımlılıkları Kurun: pip install fastapi uvicorn pydantic
  2. Sunucuyu Başlatın: python main.py(Not: Eğer main.py içinde uvicorn.run bloğu yoksa, terminalden uvicorn main:app --reload komutunu kullanabilirsiniz.)
  3. Sihre Tanıklık Edin:
    Tarayıcınızdan http://127.0.0.1:8000/docs adresine gidin. FastAPI’nin sizin için hazırladığı interaktif Swagger UI dokümantasyonunu göreceksiniz. Buradan hiçbir kod yazmadan API uç noktalarını test edebilirsiniz.

Ne Öğrendik?

Bu proje ile modern Python web geliştirmenin temel taşlarını inceledik:

  • Asenkron Programlama: async/await ile non-blocking (bloklamayan) yapılar kurmayı.
  • Otomatik Doğrulama: Pydantic ile veri tipini ve kısıtlamalarını belirlemeyi.
  • Hızlı Dokümantasyon: OpenAPI standartları sayesinde anında test edilebilir belgeler oluşturmayı.
  • HTTP Durum Kodları: 201 Created veya 404 Not Found gibi standartlara uygun yanıtlar dönmeyi.

Kaynaklar ve Sonraki Adımlar

FastAPI dünyası çok derin. Daha fazlasını öğrenmek için resmi dokümantasyona göz atabilir veya veritabanı entegrasyonu (SQLAlchemy, MongoDB) üzerine çalışmaya başlayabilirsiniz.

Ahmet Aksoy

Not: Bu yazıda incelediğimiz kodu ve benzer projelerin kaynak kodlarını https://github.com/ahmetax/practical-python-examples adresinde bulabilirsiniz.

fastapi, python, web geliştirme, rest api, pydantic, asenkron programlama, başlangıç seviyesi, yazılım, kod

Bir Yanıt Bırak

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir