FastAPI; HTTP tabanlı API servisleri geliştirmek için geliştirilmiş modern, hızlı ve yüksek performanslı bir Python web framework'üdür. İlk defa 5 Aralık 2018'de Sebastián Ramírez tarafından geliştirilmeye başlanmıştır. Python ve FastAPI bileşenlerinin uyumlu olduğu her platformda (Windows, Linux, MacOS gibi) çalıştırılabilmektedir. Python 3.8 ve üzeri sürümlerde kullanılabilmektedir.
Öne Çıkan Özellikler
Hız: Oldukça yüksek performansa sahiptir, Starrlette ve Pydantic sayesinde NodeJS ve Go ile aynı seviyededir. Özellikle bu sebeple diğer Python API framework'leri arasında öne çıkar.
Programlamada Hız: FastAPI, geliştiricilerin işini basitliği sayesinde hızlandırır.
Daha Az Hata: Geliştiricilerden kaynaklanan hataları büyük oranda azaltır.
Otomatik Tamamlama: Geniş editör desteği bulunmaktadır. Pek çok farklı IDE'de auto-complete (IntelliSense) desteklernir.
Kolaylık: Öğrenme ve kullanma kolaylığı göz önüne alınarak tasarlanmıştır. Bu sebeple halihazırda Python bilen ve hızlı bir şekilde API geliştirmek isteyen kişiler için birebirdir.
Kısalık: Kod kopyalarını olabildiğince azaltır ve kodun temiz olmasını sağlar.
Sağlamlık: Kod hemen üretime hazır hale getirilebilir. İnteraktif dökümantasyona sahip olması süreci kolaylaştırır.
Standartlara Dayalı: FastAPI, OpenAPI【1】 (eskiden Swagger olarak biliniyordu) ve JSON Schema【2】 'ya dayalıdır ve bunlarla tamamen uyumludur.
Asenkron Desteği: Daha iyi performans için async ve await anahtar kelimelerini (keywords) destekler.
Dahili Güvenlik: Yaygın güvenlik sorunlarından korunmak için OAuth2, JWT ve istek doğrulama mekanizmalarını içerir.
Bileşenler ve Gereksinimler
FastAPI, veri doğrulaması için Pydantic【3】 ve asenkron işlevselliği desteklemek için Swagger【4】 kullanır:
- Pydantic: Python için bir veri doğrulaması kütüphanesidir. Bir IDE kullanırken açıklamalara dayalı tür ipuçları sağlar, otomatik tamamlama (auto-complete) sayesinde hata ayıklamayı kolaylaştırır.
- Starlette【5】 : Asenkron işlevselliği desteklemek için kullanılan hafif bir framework'tür.
- Uvicorn【6】 : Asenkron framework'ler için minimal düzeyde ve düşük seviyeli bir web sunucusudur.
- OpenAPI: FastAPI, otomatik olarak OpenAPI standartlarına uygun API dokümantasyonları (SwaggerUI ve ReDoc) üretir. Böylece geliştiriciler gerçek zamanlı olarak API'ları test edebilir. SwaggerUI, /docs; ReDoc ise /redoc adresinden erişilebilir.
Kurulum
Python sanal ortamınızı oluşturup etkinleştirin. Sonra sanal ortamın etkinleştirildiği terminalde bu kodu kullanarak FastAPI'ı indirin:
pip install "fastapi[standard]"
Bu komut, FastAPI'ı standart kütüphaneleriyle indirir. Eğer sadece FastAPI'ı indirmek istiyorsanız bu komutu da kullanabilirsiniz:
pip install fastapi
Örnek
Basit bir FastAPI uygulaması örneği:
from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"}
Geliştirme aşamasında kodu makinede yürütmek için bu komut kullanılır (eğer yürütülecek dosya main.py ise):
fastapi dev main.py
veya Uvicorn ile:
uvicorn main:app --reload
Üretim aşamasında kodu makinede yürütmek için bu komut kullanılır (eğer yürütülecek dosya main.py ise):
fastapi run main.py
veya Uvicorn ile:
uvicorn main:app --host 0.0.0.0 --port 80
İnteraktif API Dokümantasyonu
SwaggerUI aracılığıyla oluşturulan dokümantasyona [url'niz]/docs, ReDoc ile oluşturulan dokümantasyona [url'niz]/redoc üzerinden ulaşılabilir.