Files
fastapi/docs/tr/docs/features.md
Motov Yurii ea8db708f1 🌐 Update translations for tr (update-all) (#14913)
* Update all

* 🎨 Auto format

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-13 13:41:38 +01:00

11 KiB
Raw Blame History

Özellikler

FastAPI Özellikleri

FastAPI size şunları sağlar:

ık Standartlara Dayalı

  • API oluşturmada OpenAPI, buna path operasyonları, 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 otomatik client code generation da kullanılabilir.

Otomatik Dokümantasyon

Etkileşimli API dokümantasyonu ve keşif için web arayüzleri. Framework OpenAPIye dayandığından, birden fazla seçenek vardır; varsayılan olarak 2si dahildir.

  • Swagger UI ile etkileşimli keşif; APInizi tarayıcıdan doğrudan çağırıp test edin.

Swagger UI interaction

  • ReDoc ile alternatif API dokümantasyonu.

ReDoc

Sadece Modern Python

Her şey standart Python type deklarasyonlarına dayanır (Pydantic sayesinde). Öğrenilecek yeni bir söz dizimi yok. Sadece standart, modern Python.

Python typeları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{.internal-link target=_blank}.

Türleriyle standart Python yazarsınız:

from datetime import date

from pydantic import BaseModel

# Bir değişkeni str olarak belirt
# ve fonksiyon içinde editör desteği al
def main(user_id: str):
    return user_id


# Bir Pydantic modeli
class User(BaseModel):
    id: int
    name: str
    joined: date

Sonra şö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 dictindeki 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 ki en çok kullanılan özelliklerden biri "otomatik tamamlama".

Tüm FastAPI 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:

editor support

editor support

Daha önce imkânsız olduğunu düşünebileceğiniz yerlerde bile tamamlama alırsınız. Örneğin, bir requestten gelen (iç içe de olabilir) JSON body içindeki price anahtarı için.

Artık anahtar adlarını yanlış yazmak, dokümana gidip gelmek ya da sonunda username mi user_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 APIyi oluşturabilir.

Ancak varsayılan hâliyle hepsi “hemen çalışır”.

Doğrulama

  • Çoğu (veya hepsi?) Python veri 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.
  • Daha “egzotik” tipler için doğrulama:

    • URL.
    • Email.
    • UUID.
    • ...ve diğerleri.

Tüm doğrulama köklü ve sağlam Pydantic 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.

OpenAPIda tanımlanan tüm güvenlik şemaları, şunlar dâhil:

  • HTTP Basic.
  • OAuth2 (ayrıca JWT tokenlarla). Şu eğitime göz atın: OAuth2 with JWT{.internal-link target=_blank}.
  • API anahtarları:
    • Headerlarda.
    • Query parametrelerinde.
    • Cookielerde vb.

Buna ek olarak Starlettein 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ü bir Dependency Injection sistemine sahiptir.

  • Bağımlılıkların da kendi bağımlılıkları olabilir; böylece bir hiyerarşi veya bağımlılıklar "grafı" oluşur.
  • Tüm süreç framework tarafından otomatik olarak yönetilir.
  • Tüm bağımlılıklar, requestlerden veri talep edebilir ve path operation kısıtlarını ve otomatik dokümantasyonu zenginleştirebilir.
  • Bağımlılıklarda tanımlanan path operation parametreleri için bile otomatik doğrulama.
  • Karmaşık kullanıcı kimlik doğrulama sistemleri, veritabanı bağlantıları vb. için destek.
  • Veritabanları, frontendler vb. ile taviz 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

  • %100 test kapsayıcılığı.
  • %100 type 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ında Starlettein bir alt sınıfıdır. Starlettei zaten biliyor veya kullanıyorsanız, işlevlerin çoğu aynı şekilde çalışır.

FastAPI ile Starlettein tüm özelliklerini elde edersiniz (FastAPI, steroid basılmış Starlette gibidir):

Pydantic Özellikleri

FastAPI, Pydantic ile tamamen uyumludur (ve onun üzerine kuruludur). Dolayısıyla elinizdeki ek Pydantic kodları da çalışır.

Pydantice dayanan harici kütüphaneler de dâhildir; veritabanları için ORMler, ODMler gibi.

Bu aynı zamanda, birçok durumda requestten aldığınız nesneyi doğ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 nesneyi doğrudan clienta gönderebilirsiniz.

FastAPI ile Pydanticin tüm özelliklerini elde edersiniz (FastAPI, tüm veri işlemede Pydantice dayanır):

  • Kafa karıştırmaz:
    • Öğrenmeniz gereken yeni bir şema tanımlama mikro-dili yok.
    • Python typelarını biliyorsanız Pydantici nasıl kullanacağınızı da biliyorsunuz.
  • IDE/linter/beyininizle 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 typingin List ve Dicti 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çe JSON nesnelerine sahip olabilir, hepsinin doğrulanmasını ve anotasyonlanmasını sağlayabilirsiniz.
  • 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ığı.