Özellikler¶
🌐 Yapay Zekâ ve İnsanlar Tarafından Çeviri
Bu çeviri, insanlar tarafından yönlendirilen bir yapay zekâ ile oluşturuldu. 🤝
Orijinal anlamın yanlış anlaşılması ya da kulağa doğal gelmeme gibi hatalar içerebilir. 🤖
Yapay zekâ LLM'ini daha iyi yönlendirmemize yardımcı olarak bu çeviriyi iyileştirebilirsiniz.
FastAPI Özellikleri¶
FastAPI size şunları sağlar:
Açık Standartlara Dayalı¶
- API oluşturmadaOpenAPI, bunapathoperasyonları, parametreler, request body'leri, güvenlik vb. deklarasyonları dahildir.
- JSON Schema ile otomatik veri modeli dokümantasyonu (OpenAPI zaten JSON Schema'ya dayanır).
- Bu standartlar etrafında, titiz bir çalışmanın ardından tasarlandı; sonradan eklenmiş bir katman değil.
- Bu sayede birçok dilde otomatikclient code generation da kullanılabilir.
Otomatik Dokümantasyon¶
Etkileşimli API dokümantasyonu ve keşif için web arayüzleri. Framework OpenAPI’ye dayandığından, birden fazla seçenek vardır; varsayılan olarak 2’si dahildir.
- Swagger UI ile etkileşimli keşif; API’nizi tarayıcıdan doğrudan çağırıp test edin.

- ReDoc ile alternatif API dokümantasyonu.

Sadece Modern Python¶
Her şey standartPython type deklarasyonlarına dayanır (Pydantic sayesinde). Öğrenilecek yeni bir söz dizimi yok. Sadece standart, modern Python.
Python type’larını nasıl kullanacağınıza dair 2 dakikalık bir hatırlatmaya ihtiyacınız varsa (FastAPI kullanmasanız bile) kısa eğitime göz atın:Python Types.
Türleriyle standart Python yazarsınız:
fromdatetimeimportdatefrompydanticimportBaseModel# Bir değişkeni str olarak belirt# ve fonksiyon içinde editör desteği aldefmain(user_id:str):returnuser_id# Bir Pydantic modeliclassUser(BaseModel):id:intname:strjoined:dateSonra şöyle kullanabilirsiniz:
my_user:User=User(id=3,name="John Doe",joined="2018-07-19")second_user_data={"id":4,"name":"Mary","joined":"2018-11-30",}my_second_user:User=User(**second_user_data)Info
**second_user_data şu anlama gelir:
second_user_data dict’indeki anahtar ve değerleri doğrudan anahtar-değer argümanları olarak geç; şu ifadeye eşdeğerdir:User(id=4, name="Mary", joined="2018-11-30")
Editör Desteği¶
Tüm framework, kullanımı kolay ve sezgisel olacak şekilde tasarlandı; en iyi geliştirme deneyimini sağlamak için geliştirmeye başlamadan önce bile alınan kararlar birden çok editörde test edildi.
Python geliştirici anketlerinde açıkça görülüyor kien çok kullanılan özelliklerden biri "otomatik tamamlama".
TümFastAPI bunun tatmin edilmesi üzerine kuruldu. Otomatik tamamlama her yerde çalışır.
Dokümana geri dönmeniz nadiren gerekecek.
Editörünüz şöyle yardımcı olabilir:
- Visual Studio Code ile:

- PyCharm ile:

Daha önce imkânsız olduğunu düşünebileceğiniz yerlerde bile tamamlama alırsınız. Örneğin, bir request’ten gelen (iç içe de olabilir) JSON body içindekiprice anahtarı için.
Artık anahtar adlarını yanlış yazmak, dokümana gidip gelmek ya da sonundausername miuser_name mi kullandığınızı bulmak için sayfayı yukarı aşağı kaydırmak yok.
Kısa¶
Her şey için mantıklıvarsayılanlar ve her yerde isteğe bağlı yapılandırmalar vardır. Tüm parametreler, ihtiyacınızı karşılayacak şekilde ince ayar yapılarak tanımlamak istediğiniz API’yi oluşturabilir.
Ancak varsayılan hâliyle hepsi“hemen çalışır”.
Doğrulama¶
Çoğu (veya hepsi?) Pythonveri tipi için doğrulama, şunlar dâhil:
- JSON nesneleri (
dict). - Eleman tipleri tanımlanan JSON dizileri (
list). - Minimum ve maksimum uzunlukları tanımlanan String (
str) alanları. - Min ve max değerleri olan sayılar (
int,float) vb.
- JSON nesneleri (
Daha “egzotik” tipler için doğrulama:
- URL.
- Email.
- UUID.
- ...ve diğerleri.
Tüm doğrulama köklü ve sağlamPydantic tarafından yapılır.
Güvenlik ve Kimlik Doğrulama¶
Güvenlik ve kimlik doğrulama entegredir. Veritabanları veya veri modelleriyle ilgili hiçbir taviz yoktur.
OpenAPI’da tanımlanan tüm güvenlik şemaları, şunlar dâhil:
- HTTP Basic.
- OAuth2 (ayrıcaJWT token’larla). Şu eğitime göz atın:OAuth2 with JWT.
- API anahtarları:
- Header’larda.
- Query parametrelerinde.
- Cookie’lerde vb.
Buna ek olarak Starlette’in tüm güvenlik özellikleri (session cookies dâhil).
Tümü, sistemleriniz, veri depolarınız, ilişkisel ve NoSQL veritabanlarınız vb. ile kolayca entegre edilebilen, yeniden kullanılabilir araçlar ve bileşenler olarak inşa edilmiştir.
Dependency Injection¶
FastAPI, son derece kolay kullanımlı ama son derece güçlü birDependency Injection sistemine sahiptir.
- Bağımlılıkların da kendi bağımlılıkları olabilir; böylece bir hiyerarşi veyabağımlılıklar "grafı" oluşur.
- Tüm süreç framework tarafındanotomatik olarak yönetilir.
- Tüm bağımlılıklar, request’lerden veri talep edebilir vepath operation kısıtlarını ve otomatik dokümantasyonuzenginleştirebilir.
- Bağımlılıklarda tanımlananpath operation parametreleri için bileotomatik doğrulama.
- Karmaşık kullanıcı kimlik doğrulama sistemleri,veritabanı bağlantıları vb. için destek.
- Veritabanları, frontend’ler vb. iletaviz yok; ancak hepsiyle kolay entegrasyon.
Sınırsız "Plug-in"¶
Başka bir deyişle, onlara gerek yok; ihtiyaç duyduğunuz kodu import edin ve kullanın.
Her entegrasyon (bağımlılıklar ile) o kadar basit olacak şekilde tasarlanmıştır ki, uygulamanız için,path operations ile kullandığınız aynı yapı ve söz dizimiyle sadece 2 satırda bir “plug-in” yazabilirsiniz.
Test Edildi¶
- %100test kapsayıcılığı.
- %100type annotated kod tabanı.
- Üretimde kullanılan uygulamalarda kullanılıyor.
Starlette Özellikleri¶
FastAPI,Starlette ile tamamen uyumludur (ve onun üzerine kuruludur). Dolayısıyla elinizdeki ek Starlette kodları da çalışır.
FastAPI aslındaStarlette’in bir alt sınıfıdır. Starlette’i zaten biliyor veya kullanıyorsanız, işlevlerin çoğu aynı şekilde çalışır.
FastAPI ileStarlette’in tüm özelliklerini elde edersiniz (FastAPI, steroid basılmış Starlette gibidir):
- Cidden etkileyici performans.Mevcut en hızlı Python frameworklerinden biridir;NodeJS veGo ile aynı seviyededir.
- WebSocket desteği.
- Süreç içi arka plan görevleri.
- Başlatma ve kapatma olayları.
- HTTPX üzerine kurulu test istemcisi.
- CORS, GZip, Static Files, Streaming response’lar.
- Session veCookie desteği.
- %100 test kapsayıcılığı.
- %100 type annotated kod tabanı.
Pydantic Özellikleri¶
FastAPI,Pydantic ile tamamen uyumludur (ve onun üzerine kuruludur). Dolayısıyla elinizdeki ek Pydantic kodları da çalışır.
Pydantic’e dayanan harici kütüphaneler de dâhildir; veritabanları içinORM’ler,ODM’ler gibi.
Bu aynı zamanda, birçok durumda request’ten aldığınız nesneyidoğrudan veritabanına iletebileceğiniz anlamına gelir; zira her şey otomatik olarak doğrulanır.
Tersi yönde de geçerlidir; birçok durumda veritabanından aldığınız nesneyidoğrudan client’a gönderebilirsiniz.
FastAPI ilePydantic’in tüm özelliklerini elde edersiniz (FastAPI, tüm veri işlemede Pydantic’e dayanır):
- Kafa karıştırmaz:
- Öğrenmeniz gereken yeni bir şema tanımlama mikro-dili yok.
- Python type’larını biliyorsanız Pydantic’i nasıl kullanacağınızı da biliyorsunuz.
- IDE/linter/beyin’inizle iyi anlaşır:
- Pydantic veri yapıları, sizin tanımladığınız sınıfların örnekleridir; bu nedenle doğrulanmış verilerinizle otomatik tamamlama, linting ve mypy sorunsuz çalışır, sezgileriniz de yol gösterir.
- Karmaşık yapıları doğrulayın:
- Hiyerarşik Pydantic modelleri, Python
typing’inListveDict’i vb. kullanımı. - Doğrulayıcılar (validators), karmaşık veri şemalarının net ve kolay şekilde tanımlanmasını, kontrol edilmesini ve JSON Schema olarak dokümante edilmesini sağlar.
- Derinlemesine iç içeJSON nesnelerine sahip olabilir, hepsinin doğrulanmasını ve anotasyonlanmasını sağlayabilirsiniz.
- Hiyerarşik Pydantic modelleri, Python
- Genişletilebilir:
- Pydantic, özel veri tiplerinin tanımlanmasına izin verir; ayrıca validator decorator’üyle bir modeldeki metodlarla doğrulamayı genişletebilirsiniz.
- %100 test kapsayıcılığı.







