API oluşturma işlemlerinde OpenAPI buna path operasyonları parametreleri, body talebi, güvenlik gibi şeyler dahil olmak üzere deklare bunların deklare edilmesi.
Otomatik olarak data modelinin JSON Schema ile beraber dokümante edilmesi (OpenAPI'n kendisi zaten JSON Schema'ya dayanıyor).
Titiz bir çalışmanın sonucunda yukarıdaki standartlara uygun bir framework oluşturduk. Standartları pastanın üzerine sonradan eklenmiş bir çilek olarak görmedik.
Ayrıca bu bir çok dilde kullanılabilecek client code generator kullanımına da izin veriyor.
OpenAPI standartlarına dayalı olan bir framework olarak, geliştiricilerin birden çok seçeneği var, varsayılan olarak gelen 2 farklı interaktif API dokümantasyonu ve web kullanıcı arayüzü var.
Swagger UI interaktif olarak API'ınızı tarayıcı üzerinden çağırıp test edebilmenize olanak sağlıyor.
Tamamiyle standartlar Python 3.8'nın type hintlerine dayanıyor (Pydantic'in sayesinde). Yeni bir syntax öğrenmene gerek yok. Sadece modern Python.
Eğer Python type hintlerini bilmiyorsan veya bir hatırlatmaya ihtiyacın var ise(FastAPI kullanmasan bile) şu iki dakikalık küçük bilgilendirici içeriğe bir göz at: Python Types.
Standart Python'u typelarını belirterek yazıyorsun:
fromtypingimportList,DictfromdatetimeimportdatefrompydanticimportBaseModel# Değişkeni str olarak belirt# ve o fonksiyon için harika bir editör desteği aldefmain(user_id:str):returnuser_id# Pydantic modeliclassUser(BaseModel):id:intname:strjoined:date
Bütün framework kullanılması kolay ve sezgileri güçlü olması için tasarlandı, verilen bütün kararlar geliştiricilere en iyi geliştirme deneyimini yaşatmak üzere, bir çok editör üzerinde test edildi.
Daha önceden düşünüp en imkansız diyebileceğin durumlarda bile otomatik tamamlama alacaksın, örnek olarak price JSON body içerisinde (nested bir JSON body de olabilirdi.) direkt olarak istekten geliyor, bu durumda bile oto-tammalama sağlıyor.
Artık key isimlerini yanlış yazma, dokümantasyona dönüp deliler gibi yukarı aşağı sayfada gezmek ve en sonunda username mi yoksa user_name mi kullandım gibi sorular yok.
Güvenlik ve doğrulama database ve data modellerinden taviz vermeden entegre edilebilir durumda.
Bütün güvenlik şemaları OpenAPI'da tanımlanmış durumda, kapsadıkları:
HTTP Basic.
OAuth2 (ve JWT tokenleriyle beraber). Bu öğretici içeriğe göz atabilirsin OAuth2 with JWT.
API anahtarları:
Headerlar.
Query parametreleri.
Cookies, vs.
Bütün güvenlik özellikleri Starlette'den geliyor (session cookies'de dahil olmak üzere).
Bütün hepsi tekrardan kullanılabilir aletler ve bileşenler olarak, kolayca sistemlerinize, data depolarınıza, ilişkisel ve NoSQL databaselerinize entegre edebileceğiniz şekilde yapıldı.
FastAPI'ın inanılmaz derecede kullanımı kolay, fakat inanılmaz derecede güçlü Dependency Injection sistemi var.
Dependencylerin bile dependencies'i olabiliyor, FastAPI bunun için graph of "dependency" yaratıyor.
Hepsi otomatik olarak FastAPI tarafından hallediliyor.
Bütün zorunlulukların gelen datalara bağlı olarak farklı gereksinimleri olabiliyor, ilave path operasyonlarının kısıtlamaları ve otomatik dokümantasyonu da ayrıca yapılıyor .
Path operasyonu parametreleri içerisinde belirtilen gereksinimler için bile Otomatik doğrulama yapılabiliyor.
Kompleks kimlik doğrulama sistemleri için destek, database bağlantıları, vs.
Taviz yok hiçbir şeyden taviz vermeden, database frontend vs. Bütün hepsinin kolayca entegre edilebiliyor.
Başka bir deyişle, plug-inlere ihtiyacımız yok, import edip direkt olarak kullanmaya başlayabiliriz.
Bütün entegrasyonlar kullanımı kolay olmak üzere (zorunluluklar ile beraber) tasarlandı, sen bir "plug-in" yaratıp 2 satır kod ile, path operasyonlarında kullandığımız syntax ve aynı yapı ile koduna entregre edebilirsin.
FastAPI ile Pydantic tamamiyle uyumlu ve üzerine kurulu. Yani FastAPI üzerine ekleme yapacağınız herhangi bir Pydantic kodu da çalışacaktır.
Bunlara Pydantic üzerine kurulu ORM databaseler ve , ODM kütüphaneler de dahil olmak üzere.
Bu ayrıca şu anlama da geliyor, bir çok durumda requestten gelen objeyi direkt olarak database'e her şeyi otomatik olarak doğrulanmış bir biçimde aktarabilirisin.
Aynı şekilde, databaseden gelen objeyi de direkt olarak isteğe de tamamiyle doğrulanmış bir biçimde gönderebilirsiniz.
FastAPI ile beraber Pydantic'in bütün özelliklerine sahip olacaksınız (FastAPI data kontrolünü Pydantic'in üzerine kurduğu için):
Kafa karıştırmaz:
Farklı bir syntax öğrenmenize gerek kalmaz,
Eğer Python typelarını nasıl kullanacağını biliyorsan Pydantic kullanmayı da biliyorsundur.
Kullandığın geliştirme araçları ile iyi çalışır IDE/linter/brain:
Pydantic'in veri yapıları aslında sadece senin tanımladığın classlar; Bu yüzden doğrulanmış dataların ile otomatik tamamlama, linting ve mypy'ı kullanarak sorunsuz bir şekilde çalışabilirsin
Hızlı:
Benchmarklarda, Pydantic'in diğer bütün test edilmiş bütün kütüphanelerden daha hızlı.
En kompleks yapıları bile doğrula:
Hiyerarşik Pydantic modellerinin kullanımı ile beraber, Python typing’s List and Dict, vs gibi şeyleri doğrula.
Doğrulayıcılar en kompleks data şemalarının bile temiz ve kolay bir şekilde tanımlanmasına izin veriyor, ve hepsi JSON şeması olarak dokümante ediliyor
Pydantic, JSON objen ne kadar derin (nested) olursa olsun doğrulamasını ve gösterimini yapıyor
Genişletilebilir:
Pydantic özelleştirilmiş data tiplerinin tanımlanmasının yapılmasına izin veriyor ayrıca validator decoratorü ile senin doğrulamaları genişletip, kendi doğrulayıcılarını yazmana izin veriyor.