October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PCOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk9 min

Python ile Hızlı ve Modern REST API Geliştirme: FastAPI Rehberi

FastAPI, tür ipuçlarını doğrulama ve API belgelerine bağlayarak Python ile REST API geliştirmeyi kolaylaştırır. Çalışan örnekten üretim kararlarına uzanan rehber.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

FastAPI ile REST API geliştirmek, Python fonksiyonlarını HTTP uç noktalarına; tür ipuçlarını da doğrulama ve API şemalarına dönüştürmekle başlar. Aşağıdaki örnek çalışan bir başlangıç uygulaması kurar; devamında veri sözleşmeleri, asenkron çalışma, yönlendirme, veritabanı, test, kimlik doğrulama ve dağıtım konularını doğru sorumluluk sınırlarıyla ele alır.

FastAPI ne sağlar, ne sağlamaz?

FastAPI, Python tür ipuçlarından yararlanarak istek verilerini doğrulayabilen ve OpenAPI şemasıyla etkileşimli API belgeleri üretebilen bir web çatısıdır. Web tarafındaki işlevler için Starlette, veri doğrulama ve şema süreçleri için Pydantic ekosisteminden yararlanır. Tipik sonuç, kodda tanımlı uç noktalarla uyumlu OpenAPI belgesi ve Swagger UI gibi etkileşimli belgeler elde etmektir. FastAPI proje sayfasında özellikler ve kurulum seçenekleri açıklanır.

As an Amazon Associate I earn from qualifying purchases.

FastAPI kendi başına veritabanı, ORM veya barındırma platformu değildir. Bu nedenle API çatısını seçmek; veri saklama, erişim yetkilendirmesi ve işletim kararlarını otomatik olarak çözmez. Bu parçaları uygulamanın mevcut veri modeli ve operasyon ihtiyaçlarına göre seçmek gerekir.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Kurulum ve ilk uç nokta

FastAPI ana sayfasındaki güncel kurulum örneği uv add "fastapi[standard]" komutudur. Projenizin paket yöneticisine ve mevcut ortamına uygun yönergeler için resmi kurulum sayfasını kontrol edin.

Kurulumdan sonra aşağıdaki içeriği main.py dosyasına koyabilirsiniz:

from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}

Uygulamayı geliştirme sırasında Uvicorn ile başlatmak için, kurulu standart bağımlılıkların sağlandığı bir ortamda şu komutu kullanın:

uvicorn main:app --reload

main:app, main.py dosyasındaki app nesnesini belirtir. --reload kod değişikliklerinde geliştirme sunucusunu yeniler; üretim çalıştırma ve dağıtım ayarlarının yerine geçmez.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Parametreler, tür dönüşümü ve doğrulama

/items/{item_id} yolundaki item_id bir yol parametresidir. Fonksiyon imzasındaki int türü, FastAPI’ye değerin tamsayı olarak ele alınacağını söyler. q yolun parçası olmadığı ve varsayılanı bulunduğu için isteğin sorgu parametresidir; örnek istek /items/12?q=kalem biçimindedir. FastAPI, türle uyumlu dönüşüm ve geçersiz girdi yanıtları oluşturabilir.

Bu otomatik doğrulama, iş kurallarının tamamını ifade etmez. Örneğin bir öğenin gerçekten mevcut olup olmadığı veya kullanıcının onu görmeye yetkili olup olmadığı ayrıca uygulama mantığında denetlenmelidir.

İstek gövdesi ve etkileşimli belgeler

JSON gövdesini açık bir veri modeliyle tanımlamak, hem beklenen alanları hem de API sözleşmesini görünür kılar:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class ItemCreate(BaseModel):
    name: str
    price: float
    in_stock: bool = True

@app.post("/items/")
async def create_item(item: ItemCreate):
    return item

POST /items/ isteğinin gövdesi bu modelin alanlarına göre çözümlenir ve doğrulanır. Varsayılan değeri olmayan name ve price gereklidir; in_stock gönderilmezse True olur. FastAPI, tanımlardan OpenAPI belgesi ve etkileşimli dokümantasyon üretir; varsayılan uygulamada belgeler /docs yolunda, ReDoc arayüzü ise /redoc yolunda sunulur. Böylece istemci geliştiricileri uç noktaları deneyebilir ve şemayı inceleyebilir.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

API veri sözleşmelerini ve katmanları ayırın

Pydantic tabanlı modeller, API sınırından geçen verinin biçimini tanımlamak için kullanışlıdır. İstemciden alınacak veri ile istemciye döndürülecek verinin aynı olması şart değildir. Örneğin oluşturma isteği istemciden bir ad ve fiyat alırken, yanıt ayrıca sunucunun atadığı kimlik alanını içerebilir.

İstek ve yanıt şemalarını veritabanı tablolarıyla özdeş kabul etmeyin. API sözleşmesi istemciler için kararlı ve anlaşılır olmalı; kalıcılık modeli ise veri saklama ve sorgulama ihtiyaçlarını karşılamalıdır. Alanları ayırmak, iç veri yapısını değiştirdiğinizde dış API’yi istemeden değiştirme riskini azaltır. Tür ipuçları ve otomatik doğrulama faydalıdır, ancak alan düzeyindeki kuralları, iş mantığını veya güvenlik denetimini tek başına sağlamaz.

Uygulama büyüdüğünde yönlendiricileri ayırın

Tek dosyalı örnek, ilk uç noktayı anlamayı kolaylaştırır. Uç noktalar kaynaklara veya işlevlere göre çoğaldığında her şeyi main.py içine yığmak yerine yönlendiricileri ve modülleri ayırın. FastAPI’nin birden fazla dosyalı uygulamalar rehberi, daha büyük uygulamaların nasıl düzenleneceğini gösterir.

Örneğin öğeler için bir yönlendirici, kullanıcılar için başka bir yönlendirici tanımlanabilir; ana uygulama bunları dahil eder. Bu düzen, uç noktaları bulmayı ve ilgili mantığı birlikte değiştirmeyi kolaylaştırır. Veri erişimi, iş kuralları ve HTTP katmanını ayırmak da test edilebilirliği artırır; ancak küçük bir uygulamaya gereksiz soyutlama eklemek gerekmez.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Ne zaman async def, ne zaman def kullanılmalı?

Fonksiyon türünü hız beklentisine göre değil, kullandığınız I/O kütüphanelerinin çalışma biçimine göre seçin. FastAPI, async def ve sıradan def uç noktalarının birlikte kullanılmasını destekler. Resmî eşzamanlılık ve async/await rehberi bu ayrımı açıklar.

  • Veritabanı sürücünüz, HTTP istemciniz veya başka I/O aracınız await edilebiliyorsa ve çağrıları await ile yapıyorsanız async def kullanın.
  • Kullandığınız kütüphane bloklayan ve eşzamansız arayüz sunmayan bir I/O çağrısı yapıyorsa sıradan def uygun olabilir.
  • Hesaplama ağırlıklı işlerin de sırf uç nokta async def olduğu için otomatik olarak hızlanacağını varsaymayın; işin maliyeti ve nasıl çalıştırıldığı önemlidir.

Bir uç noktada bloklayan işlemleri kontrolsüz biçimde doğrudan çalıştırmak, eşzamanlı istekleri bekletebilir. Seçtiğiniz istemci ve sürücünün belgelerine bakın; eşzamanlılık modelini uçtan uca tutarlı kurun. Asenkron kod her uygulama için varsayılan performans çözümü değildir.

Veritabanı ve kalıcılık seçimi

Veritabanına geçmeden önce hangi verilerin saklanacağını, ilişkileri, sorgu biçimlerini ve mevcut altyapıyı belirleyin. FastAPI belirli bir veritabanını zorunlu kılmaz. Resmî SQL veritabanı örneği SQLModel kullanır ve PostgreSQL, MySQL, SQLite, Oracle ile Microsoft SQL Server gibi ilişkisel veritabanlarının kullanılabileceğini belirtir; başka SQL ve NoSQL kütüphaneleri de seçilebilir. Ayrıntılar için SQL (İlişkisel) Veritabanları rehberine bakın.

SQLModel, bu örnekteki seçenektir; her projeye uygun tek çözüm değildir. Seçimi mevcut veri modeliniz, kullandığınız sürücünün eşzamanlı/asenkron yapısı, migration ihtiyacı ve ekibin araçlarına göre yapın. HTTP katmanı, veritabanı işlemlerini ve oturum yaşam döngüsünü açık biçimde yönetmelidir; API modelini doğrudan kalıcılık modeli yapmak zorunda değilsiniz.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Uç noktaları otomatik test edin

HTTP katmanını test etmek için FastAPI’nin resmî öğreticisi HTTPX ve pytest örnekleri sunar. Test rehberini izleyerek başarılı yanıtların yanı sıra geçersiz girdileri ve beklenen hata durumlarını da sınayın.

Örneğin testler; durum kodunu, JSON yanıtının alanlarını ve doğrulama hatasının beklenen biçimde döndüğünü doğrulayabilir. Veritabanı kullanan testlerde uygulamanın hangi veritabanına bağlandığını ve test verilerinin nasıl izole edildiğini açıkça yönetin. Böylece test sonucu geliştirici makinesindeki tesadüfi veriye bağlı kalmaz.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Kimlik doğrulama, yetkilendirme ve güvenlik

Kimlik doğrulama, isteğin hangi kullanıcı veya istemciden geldiğini belirleme; yetkilendirme ise o kimliğin hangi işlemleri yapabileceğine karar verme işidir. FastAPI’nin OAuth2 ve JWT öğreticisi bu yapıların uygulanmasına yönelik bir örnek sunar. Öğretici örneği tek başına üretim için eksiksiz bir güvenlik sistemi anlamına gelmez.

Gerçek uygulamada parola saklama ve doğrulama, token ömrü ve yenileme davranışı, erişim yetkilerinin denetlenmesi, gizli anahtarların güvenli yönetimi ve dağıtım ortamının güvenlik gereksinimleri ayrıca tasarlanmalıdır. JWT kullanmak bu sorumlulukları ortadan kaldırmaz; erişimi yalnızca tokenın geçerli olup olmadığına bakarak değil, istenen kaynağa ve işleme göre de denetleyin.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Dağıtım ve performans beklentilerini doğru kurun

FastAPI farklı bulut sağlayıcılarında ve başka dağıtım ortamlarında çalıştırılabilir. Resmî dağıtım rehberi seçenekleri ve dikkate alınacak konuları açıklar; FastAPI Cloud da belgelenen seçeneklerden biridir. Barındırma kararını trafik, çalışma ortamı, ölçekleme, izleme ve ekibin operasyon kapasitesi gibi gereksinimlere göre verin. Framework seçimi, dağıtım platformu seçimini sizin yerinize yapmaz.

FastAPI proje ana sayfası, Uvicorn üzerinde çalışan FastAPI uygulamalarını TechEmpower kıyaslamalarında en hızlı Python çatılarından bazıları arasında, Starlette ve Uvicorn’un hemen arkasında konumlandırır. Bu, projenin kendi özetidir; belirli bir API’nin aynı sıralamayı veya hızı elde edeceğini göstermez. Uç noktanın yaptığı iş, veritabanı davranışı, dağıtım yapılandırması ve ölçüm yöntemi sonucu değiştirir. Belirli bir uygulamaya ait bağımsız, tarihli bir performans ölçümü bu bilgilerle ortaya konmuş değildir.

Ana sayfa ayrıca özellik geliştirmede tahmini %200–%300 hızlanma ve geliştirici kaynaklı hatalarda yaklaşık %40 azalma ifadelerini, proje ekibinin iç testlerine dayalı tahminler olarak sunar; sayfada bu tahminler için yayın yılı belirtilmez. Bunlar bağımsız ölçüm olarak veya sizin projeniz için garanti şeklinde okunmamalıdır. Aynı sayfadaki Kabir Khan, Microsoft imzalı kullanıcı yorumu da proje sayfasındaki bir tanıklıktır; performans ya da yaygın kullanım düzeyine ilişkin bağımsız kanıt değildir. FastAPI ana sayfasında bu ifadelerin bağlamı yer alır.

Başlangıçtan üretime geçiş kontrol listesi

  1. Python ve paket yönetimi ortamınızı belirleyip resmi kurulum yönergelerine göre FastAPI’yi yükleyin.
  2. Bir uç noktayı tür ipuçlarıyla tanımlayın; yol, sorgu ve gövde verilerinin hangileri olduğunu netleştirin.
  3. İstek ve yanıt modellerini API sözleşmesi olarak kurun; iş kurallarını ve yetkilendirmeyi ayrıca uygulayın.
  4. Uygulama büyüdükçe yönlendiricileri ve veri erişim mantığını uygun modüllere ayırın.
  5. Veritabanını mevcut model ve sürücü ihtiyaçlarına göre seçin; kalıcılık işlemlerini HTTP katmanından ayırın.
  6. HTTPX/pytest ile normal yanıtları, doğrulama hatalarını ve veri bağımlı durumları test edin.
  7. Kimlik doğrulama, yetkilendirme, sırların yönetimi ve dağıtım işletimini ayrı ayrı gözden geçirin.
  8. Dağıtım ortamında kendi iş yükünüzü ölçün; genel kıyaslamaları uygulamanızın performans garantisi saymayın.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.