Skip to content

Commit

Permalink
Add 'tr/history-design-future.md'
Browse files Browse the repository at this point in the history
  • Loading branch information
hasansezertasan committed Jan 23, 2024
1 parent 510c7a5 commit d38dd62
Showing 1 changed file with 79 additions and 0 deletions.
79 changes: 79 additions & 0 deletions docs/tr/docs/history-design-future.md
@@ -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 öncüllerinin 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 öğrenme şansım oldu, fikirleri alıp, kendim ve çalıştığım geliştirici ekipleri için en iyi şekilde birleştirebildim.

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üşdü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.

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örler.

Bu 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, bütün artıları 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ı ve standartlar ve tanımlar hakkındaki bilgi net ve tazeydi.

## Gelecek

Şimdiye kadar, **FastAPI**'ın fikirleri 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.

0 comments on commit d38dd62

Please sign in to comment.