FastAPI ile REST API geliştirmek, Python fonksiyonlarını HTTP uç noktalarına; tür ipuçlarını da doğrulama ve API şemalarına dönüştürmekle başlar. Aşağıdaki örnek çalışan bir başlangıç uygulaması kurar; devamında veri sözleşmeleri, asenkron çalışma, yönlendirme, veritabanı, test, kimlik doğrulama ve dağıtım konularını doğru sorumluluk sınırlarıyla ele alır.
FastAPI ne sağlar, ne sağlamaz?
FastAPI, Python tür ipuçlarından yararlanarak istek verilerini doğrulayabilen ve OpenAPI şemasıyla etkileşimli API belgeleri üretebilen bir web çatısıdır. Web tarafındaki işlevler için Starlette, veri doğrulama ve şema süreçleri için Pydantic ekosisteminden yararlanır. Tipik sonuç, kodda tanımlı uç noktalarla uyumlu OpenAPI belgesi ve Swagger UI gibi etkileşimli belgeler elde etmektir. FastAPI proje sayfasında özellikler ve kurulum seçenekleri açıklanır.
As an Amazon Associate I earn from qualifying purchases.
FastAPI kendi başına veritabanı, ORM veya barındırma platformu değildir. Bu nedenle API çatısını seçmek; veri saklama, erişim yetkilendirmesi ve işletim kararlarını otomatik olarak çözmez. Bu parçaları uygulamanın mevcut veri modeli ve operasyon ihtiyaçlarına göre seçmek gerekir.
Free tools Windows power users keep installed
One-click scans. No signup required.
Kurulum ve ilk uç nokta
FastAPI ana sayfasındaki güncel kurulum örneği uv add "fastapi[standard]" komutudur. Projenizin paket yöneticisine ve mevcut ortamına uygun yönergeler için resmi kurulum sayfasını kontrol edin.
#1 Best Overall
Kurulumdan sonra aşağıdaki içeriği main.py dosyasına koyabilirsiniz:
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}
Uygulamayı geliştirme sırasında Uvicorn ile başlatmak için, kurulu standart bağımlılıkların sağlandığı bir ortamda şu komutu kullanın:
uvicorn main:app --reload
main:app, main.py dosyasındaki app nesnesini belirtir. --reload kod değişikliklerinde geliştirme sunucusunu yeniler; üretim çalıştırma ve dağıtım ayarlarının yerine geçmez.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Parametreler, tür dönüşümü ve doğrulama
/items/{item_id} yolundaki item_id bir yol parametresidir. Fonksiyon imzasındaki int türü, FastAPI’ye değerin tamsayı olarak ele alınacağını söyler. q yolun parçası olmadığı ve varsayılanı bulunduğu için isteğin sorgu parametresidir; örnek istek /items/12?q=kalem biçimindedir. FastAPI, türle uyumlu dönüşüm ve geçersiz girdi yanıtları oluşturabilir.
Bu otomatik doğrulama, iş kurallarının tamamını ifade etmez. Örneğin bir öğenin gerçekten mevcut olup olmadığı veya kullanıcının onu görmeye yetkili olup olmadığı ayrıca uygulama mantığında denetlenmelidir.
İstek gövdesi ve etkileşimli belgeler
JSON gövdesini açık bir veri modeliyle tanımlamak, hem beklenen alanları hem de API sözleşmesini görünür kılar:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class ItemCreate(BaseModel):
name: str
price: float
in_stock: bool = True
@app.post("/items/")
async def create_item(item: ItemCreate):
return item
POST /items/ isteğinin gövdesi bu modelin alanlarına göre çözümlenir ve doğrulanır. Varsayılan değeri olmayan name ve price gereklidir; in_stock gönderilmezse True olur. FastAPI, tanımlardan OpenAPI belgesi ve etkileşimli dokümantasyon üretir; varsayılan uygulamada belgeler /docs yolunda, ReDoc arayüzü ise /redoc yolunda sunulur. Böylece istemci geliştiricileri uç noktaları deneyebilir ve şemayı inceleyebilir.
API veri sözleşmelerini ve katmanları ayırın
Pydantic tabanlı modeller, API sınırından geçen verinin biçimini tanımlamak için kullanışlıdır. İstemciden alınacak veri ile istemciye döndürülecek verinin aynı olması şart değildir. Örneğin oluşturma isteği istemciden bir ad ve fiyat alırken, yanıt ayrıca sunucunun atadığı kimlik alanını içerebilir.
İstek ve yanıt şemalarını veritabanı tablolarıyla özdeş kabul etmeyin. API sözleşmesi istemciler için kararlı ve anlaşılır olmalı; kalıcılık modeli ise veri saklama ve sorgulama ihtiyaçlarını karşılamalıdır. Alanları ayırmak, iç veri yapısını değiştirdiğinizde dış API’yi istemeden değiştirme riskini azaltır. Tür ipuçları ve otomatik doğrulama faydalıdır, ancak alan düzeyindeki kuralları, iş mantığını veya güvenlik denetimini tek başına sağlamaz.
Uygulama büyüdüğünde yönlendiricileri ayırın
Tek dosyalı örnek, ilk uç noktayı anlamayı kolaylaştırır. Uç noktalar kaynaklara veya işlevlere göre çoğaldığında her şeyi main.py içine yığmak yerine yönlendiricileri ve modülleri ayırın. FastAPI’nin birden fazla dosyalı uygulamalar rehberi, daha büyük uygulamaların nasıl düzenleneceğini gösterir.
Örneğin öğeler için bir yönlendirici, kullanıcılar için başka bir yönlendirici tanımlanabilir; ana uygulama bunları dahil eder. Bu düzen, uç noktaları bulmayı ve ilgili mantığı birlikte değiştirmeyi kolaylaştırır. Veri erişimi, iş kuralları ve HTTP katmanını ayırmak da test edilebilirliği artırır; ancak küçük bir uygulamaya gereksiz soyutlama eklemek gerekmez.
Ne zaman async def, ne zaman def kullanılmalı?
Fonksiyon türünü hız beklentisine göre değil, kullandığınız I/O kütüphanelerinin çalışma biçimine göre seçin. FastAPI, async def ve sıradan def uç noktalarının birlikte kullanılmasını destekler. Resmî eşzamanlılık ve async/await rehberi bu ayrımı açıklar.
Rank #4
- Veritabanı sürücünüz, HTTP istemciniz veya başka I/O aracınız await edilebiliyorsa ve çağrıları
awaitile yapıyorsanızasync defkullanın. - Kullandığınız kütüphane bloklayan ve eşzamansız arayüz sunmayan bir I/O çağrısı yapıyorsa sıradan
defuygun olabilir. - Hesaplama ağırlıklı işlerin de sırf uç nokta
async defolduğu için otomatik olarak hızlanacağını varsaymayın; işin maliyeti ve nasıl çalıştırıldığı önemlidir.
Bir uç noktada bloklayan işlemleri kontrolsüz biçimde doğrudan çalıştırmak, eşzamanlı istekleri bekletebilir. Seçtiğiniz istemci ve sürücünün belgelerine bakın; eşzamanlılık modelini uçtan uca tutarlı kurun. Asenkron kod her uygulama için varsayılan performans çözümü değildir.
Veritabanı ve kalıcılık seçimi
Veritabanına geçmeden önce hangi verilerin saklanacağını, ilişkileri, sorgu biçimlerini ve mevcut altyapıyı belirleyin. FastAPI belirli bir veritabanını zorunlu kılmaz. Resmî SQL veritabanı örneği SQLModel kullanır ve PostgreSQL, MySQL, SQLite, Oracle ile Microsoft SQL Server gibi ilişkisel veritabanlarının kullanılabileceğini belirtir; başka SQL ve NoSQL kütüphaneleri de seçilebilir. Ayrıntılar için SQL (İlişkisel) Veritabanları rehberine bakın.
SQLModel, bu örnekteki seçenektir; her projeye uygun tek çözüm değildir. Seçimi mevcut veri modeliniz, kullandığınız sürücünün eşzamanlı/asenkron yapısı, migration ihtiyacı ve ekibin araçlarına göre yapın. HTTP katmanı, veritabanı işlemlerini ve oturum yaşam döngüsünü açık biçimde yönetmelidir; API modelini doğrudan kalıcılık modeli yapmak zorunda değilsiniz.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Uç noktaları otomatik test edin
HTTP katmanını test etmek için FastAPI’nin resmî öğreticisi HTTPX ve pytest örnekleri sunar. Test rehberini izleyerek başarılı yanıtların yanı sıra geçersiz girdileri ve beklenen hata durumlarını da sınayın.
Best Value
Örneğin testler; durum kodunu, JSON yanıtının alanlarını ve doğrulama hatasının beklenen biçimde döndüğünü doğrulayabilir. Veritabanı kullanan testlerde uygulamanın hangi veritabanına bağlandığını ve test verilerinin nasıl izole edildiğini açıkça yönetin. Böylece test sonucu geliştirici makinesindeki tesadüfi veriye bağlı kalmaz.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Kimlik doğrulama, yetkilendirme ve güvenlik
Kimlik doğrulama, isteğin hangi kullanıcı veya istemciden geldiğini belirleme; yetkilendirme ise o kimliğin hangi işlemleri yapabileceğine karar verme işidir. FastAPI’nin OAuth2 ve JWT öğreticisi bu yapıların uygulanmasına yönelik bir örnek sunar. Öğretici örneği tek başına üretim için eksiksiz bir güvenlik sistemi anlamına gelmez.
Gerçek uygulamada parola saklama ve doğrulama, token ömrü ve yenileme davranışı, erişim yetkilerinin denetlenmesi, gizli anahtarların güvenli yönetimi ve dağıtım ortamının güvenlik gereksinimleri ayrıca tasarlanmalıdır. JWT kullanmak bu sorumlulukları ortadan kaldırmaz; erişimi yalnızca tokenın geçerli olup olmadığına bakarak değil, istenen kaynağa ve işleme göre de denetleyin.
Dağıtım ve performans beklentilerini doğru kurun
FastAPI farklı bulut sağlayıcılarında ve başka dağıtım ortamlarında çalıştırılabilir. Resmî dağıtım rehberi seçenekleri ve dikkate alınacak konuları açıklar; FastAPI Cloud da belgelenen seçeneklerden biridir. Barındırma kararını trafik, çalışma ortamı, ölçekleme, izleme ve ekibin operasyon kapasitesi gibi gereksinimlere göre verin. Framework seçimi, dağıtım platformu seçimini sizin yerinize yapmaz.
FastAPI proje ana sayfası, Uvicorn üzerinde çalışan FastAPI uygulamalarını TechEmpower kıyaslamalarında en hızlı Python çatılarından bazıları arasında, Starlette ve Uvicorn’un hemen arkasında konumlandırır. Bu, projenin kendi özetidir; belirli bir API’nin aynı sıralamayı veya hızı elde edeceğini göstermez. Uç noktanın yaptığı iş, veritabanı davranışı, dağıtım yapılandırması ve ölçüm yöntemi sonucu değiştirir. Belirli bir uygulamaya ait bağımsız, tarihli bir performans ölçümü bu bilgilerle ortaya konmuş değildir.
Ana sayfa ayrıca özellik geliştirmede tahmini %200–%300 hızlanma ve geliştirici kaynaklı hatalarda yaklaşık %40 azalma ifadelerini, proje ekibinin iç testlerine dayalı tahminler olarak sunar; sayfada bu tahminler için yayın yılı belirtilmez. Bunlar bağımsız ölçüm olarak veya sizin projeniz için garanti şeklinde okunmamalıdır. Aynı sayfadaki Kabir Khan, Microsoft imzalı kullanıcı yorumu da proje sayfasındaki bir tanıklıktır; performans ya da yaygın kullanım düzeyine ilişkin bağımsız kanıt değildir. FastAPI ana sayfasında bu ifadelerin bağlamı yer alır.
Quick Recap
Başlangıçtan üretime geçiş kontrol listesi
- Python ve paket yönetimi ortamınızı belirleyip resmi kurulum yönergelerine göre FastAPI’yi yükleyin.
- Bir uç noktayı tür ipuçlarıyla tanımlayın; yol, sorgu ve gövde verilerinin hangileri olduğunu netleştirin.
- İstek ve yanıt modellerini API sözleşmesi olarak kurun; iş kurallarını ve yetkilendirmeyi ayrıca uygulayın.
- Uygulama büyüdükçe yönlendiricileri ve veri erişim mantığını uygun modüllere ayırın.
- Veritabanını mevcut model ve sürücü ihtiyaçlarına göre seçin; kalıcılık işlemlerini HTTP katmanından ayırın.
- HTTPX/pytest ile normal yanıtları, doğrulama hatalarını ve veri bağımlı durumları test edin.
- Kimlik doğrulama, yetkilendirme, sırların yönetimi ve dağıtım işletimini ayrı ayrı gözden geçirin.
- Dağıtım ortamında kendi iş yükünüzü ölçün; genel kıyaslamaları uygulamanızın performans garantisi saymayın.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




