committed by
GitHub
1 changed files with 79 additions and 0 deletions
@ -0,0 +1,79 @@ |
|||||
|
# Geçmişi, Tasarımı ve Geleceği |
||||
|
|
||||
|
Bir süre önce, <a href="https://github.com/tiangolo/fastapi/issues/3#issuecomment-454956920" class="external-link" target="_blank">bir **FastAPI** kullanıcısı sordu</a>: |
||||
|
|
||||
|
> Bu projenin geçmişi nedir? Birkaç hafta içinde hiçbir yerden harika bir şeye dönüşmüş gibi görünüyor [...] |
||||
|
|
||||
|
İşte o geçmişin bir kısmı. |
||||
|
|
||||
|
## Alternatifler |
||||
|
|
||||
|
Bir süredir karmaşık gereksinimlere sahip API'lar oluşturuyor (Makine Öğrenimi, dağıtık sistemler, asenkron işler, NoSQL veritabanları vb.) ve farklı geliştirici ekiplerini yönetiyorum. |
||||
|
|
||||
|
Bu süreçte birçok alternatifi araştırmak, test etmek ve kullanmak zorunda kaldım. |
||||
|
|
||||
|
**FastAPI**'ın geçmişi, büyük ölçüde önceden geliştirilen araçların geçmişini kapsıyor. |
||||
|
|
||||
|
[Alternatifler](alternatives.md){.internal-link target=_blank} bölümünde belirtildiği gibi: |
||||
|
|
||||
|
<blockquote markdown="1"> |
||||
|
|
||||
|
Başkalarının daha önceki çalışmaları olmasaydı, **FastAPI** var olmazdı. |
||||
|
|
||||
|
Geçmişte oluşturulan pek çok araç **FastAPI**'a ilham kaynağı olmuştur. |
||||
|
|
||||
|
Yıllardır yeni bir framework oluşturmaktan kaçınıyordum. Başlangıçta **FastAPI**'ın çözdüğü sorunları çözebilmek için pek çok farklı framework, <abbr title="Eklenti: Plug-In">eklenti</abbr> ve araç kullanmayı denedim. |
||||
|
|
||||
|
Ancak bir noktada, geçmişteki diğer araçlardan en iyi fikirleri alarak bütün bu çözümleri kapsayan, ayrıca bütün bunları Python'ın daha önce mevcut olmayan özelliklerini (Python 3.6+ ile gelen <abbr title="Tip belirteçleri: Type Hints">tip belirteçleri</abbr>) kullanarak yapan bir şey üretmekten başka bir seçenek kalmamıştı. |
||||
|
|
||||
|
</blockquote> |
||||
|
|
||||
|
## Araştırma |
||||
|
|
||||
|
Önceki alternatifleri kullanarak hepsinden bir şeyler öğrenip, fikirler alıp, bunları kendim ve çalıştığım geliştirici ekipler için en iyi şekilde birleştirebilme şansım oldu. |
||||
|
|
||||
|
Mesela, ideal olarak standart Python tip belirteçlerine dayanması gerektiği açıktı. |
||||
|
|
||||
|
Ayrıca, en iyi yaklaşım zaten mevcut olan standartları kullanmaktı. |
||||
|
|
||||
|
Sonuç olarak, **FastAPI**'ı kodlamaya başlamadan önce, birkaç ay boyunca OpenAPI, JSON Schema, OAuth2 ve benzerlerinin tanımlamalarını inceledim. İlişkilerini, örtüştükleri noktaları ve farklılıklarını anlamaya çalıştım. |
||||
|
|
||||
|
## Tasarım |
||||
|
|
||||
|
Sonrasında, (**FastAPI** kullanan bir geliştirici olarak) sahip olmak istediğim "API"ı tasarlamak için biraz zaman harcadım. |
||||
|
|
||||
|
Çeşitli fikirleri en popüler Python editörlerinde test ettim: PyCharm, VS Code, Jedi tabanlı editörler. |
||||
|
|
||||
|
Bu test, en son <a href="https://www.jetbrains.com/research/python-developers-survey-2018/#development-tools" class="external-link" target="_blank">Python Developer Survey</a>'ine göre, kullanıcıların yaklaşık %80'inin kullandığı editörleri kapsıyor. |
||||
|
|
||||
|
Bu da demek oluyor ki **FastAPI**, Python geliştiricilerinin %80'inin kullandığı editörlerle test edildi. Ve diğer editörlerin çoğu benzer şekilde çalıştığından, avantajları neredeyse tüm editörlerde çalışacaktır. |
||||
|
|
||||
|
Bu şekilde, kod tekrarını mümkün olduğunca azaltmak, her yerde <abbr title="Otomatik Tamamlama: auto-complete, autocompletion, IntelliSense">otomatik tamamlama</abbr>, tip ve hata kontrollerine sahip olmak için en iyi yolları bulabildim. |
||||
|
|
||||
|
Hepsi, tüm geliştiriciler için en iyi geliştirme deneyimini sağlayacak şekilde. |
||||
|
|
||||
|
## Gereksinimler |
||||
|
|
||||
|
Çeşitli alternatifleri test ettikten sonra, avantajlarından dolayı <a href="https://pydantic-docs.helpmanual.io/" class="external-link" target="_blank">**Pydantic**</a>'i kullanmaya karar verdim. |
||||
|
|
||||
|
Sonra, JSON Schema ile tamamen uyumlu olmasını sağlamak, kısıtlama bildirimlerini tanımlamanın farklı yollarını desteklemek ve birkaç editördeki testlere dayanarak editör desteğini (tip kontrolleri, otomatik tamamlama) geliştirmek için katkıda bulundum. |
||||
|
|
||||
|
Geliştirme sırasında, diğer ana gereksinim olan <a href="https://www.starlette.io/" class="external-link" target="_blank">**Starlette**</a>'e de katkıda bulundum. |
||||
|
|
||||
|
## Geliştirme |
||||
|
|
||||
|
**FastAPI**'ı oluşturmaya başladığımda, parçaların çoğu zaten yerindeydi, tasarım tanımlanmıştı, gereksinimler ve araçlar hazırdı, standartlar ve tanımlamalar hakkındaki bilgi net ve tazeydi. |
||||
|
|
||||
|
## Gelecek |
||||
|
|
||||
|
Şimdiye kadar, **FastAPI**'ın fikirleriyle birçok kişiye faydalı olduğu apaçık ortada. |
||||
|
|
||||
|
Birçok kullanım durumuna daha iyi uyduğu için, önceki alternatiflerin yerine seçiliyor. |
||||
|
|
||||
|
Ben ve ekibim dahil, birçok geliştirici ve ekip projelerinde **FastAPI**'ya bağlı. |
||||
|
|
||||
|
Tabi, geliştirilecek birçok özellik ve iyileştirme mevcut. |
||||
|
|
||||
|
**FastAPI**'ın önünde harika bir gelecek var. |
||||
|
|
||||
|
[Yardımlarınız](help-fastapi.md){.internal-link target=_blank} çok değerlidir. |
Loading…
Reference in new issue