FastAPI Sorgu Parametreleri Hakkında Bilmeniz Gereken Her Şey (En İyi Uygulamalarla)

FastAPI, Python ile API oluşturmak için modern bir web çerçevesidir. Esnek ve kullanıcı dostu API'ler için sorgu parametreleri öne çıkar. 2024'te en iyi uygulamalar.

Efe Demir

Efe Demir

5 June 2025

FastAPI Sorgu Parametreleri Hakkında Bilmeniz Gereken Her Şey (En İyi Uygulamalarla)

FastAPI, Python ile API'ler oluşturmak için modern, yüksek performanslı bir web çerçevesidir. Öne çıkan özelliklerinden biri, geliştiricilerin esnek ve kullanıcı dostu API'ler oluşturmasına olanak tanıyan FastAPI sorgu parametrelerinin işlenmesidir. Bu makalede, 2024'te FastAPI sorgu parametrelerini etkili bir şekilde kullanmaya yönelik en iyi uygulamaları ve teknikleri inceleyeceğiz.

FastAPI Logo Image Png

Neden FastAPI Sorgu Parametrelerini Kullanmalısınız?

  1. Esneklik: FastAPI sorgu parametreleri, istemcilerin isteklerinin sonuçlarını özelleştirmesine olanak tanır. Örneğin, kullanıcılar arama sonuçlarını kategori, fiyat veya derecelendirme gibi belirli kriterlere göre filtreleyebilir.
  2. Kullanılabilirlik: İstemciler ve API arasındaki etkileşimi basitleştirirler. İstemciler sorgu parametrelerini URL'ye kolayca ekleyebilirken, geliştiriciler bu parametreleri kodlarında hızla doğrulayabilir ve işleyebilir.
  3. Performans: FastAPI sorgu parametrelerini kullanarak, bir API için gereken uç nokta sayısını azaltabilirsiniz. Her filtreleme seçeneği için ayrı uç noktalar oluşturmak yerine, tek bir uç nokta birden fazla sorgu parametresini işleyebilir.

FastAPI Sorgu Parametreleri Nasıl Kullanılır

FastAPI Sorgu Parametrelerini Tanımlama

FastAPI'de sorgu parametrelerini tanımlamak için, bunları uç nokta tanımınızdaki işlev parametreleri olarak dahil etmeniz yeterlidir. İşte basit bir örnek:

from fastapi import FastAPI, Query

app = FastAPI()

@app.get("/items/")
async def read_items(
    q: str | None = Query(default=None, max_length=50),
    skip: int = Query(default=0, ge=0),
    limit: int = Query(default=10, le=100)
):
    return {"q": q, "skip": skip, "limit": limit}

Bu örnekte:

FastAPI Sorgu Parametrelerine Erişim

Bir istemci uç noktaya bir istek yaptığında, FastAPI sorgu parametrelerini URL'den otomatik olarak çıkarır ve bunları işleve iletir. Örneğin, /items/?q=foo&skip=10&limit=5 adresine bir istek yapılırsa, işlev şunları alacaktır:

Bu otomatik çıkarma, ek ayrıştırma mantığı olmadan FastAPI sorgu parametreleriyle çalışmayı kolaylaştırır.

İsteğe Bağlı ve Gerekli FastAPI Sorgu Parametreleri

Varsayılan olarak, FastAPI sorgu parametreleri isteğe bağlıdır. Bir parametre istekte sağlanmazsa, FastAPI belirtilen varsayılan değeri kullanacaktır. Bir sorgu parametresini gerekli yapmak için, varsayılan değeri atlamanız yeterlidir:

@app.get("/items/")
async def read_items(required_param: str):
    return {"required_param": required_param}

required_param isteğe dahil edilmezse, FastAPI gerekli bir sorgu parametresinin eksik olduğunu belirten 422 İşlenemeyen Varlık hatası döndürecektir.

FastAPI Sorgu Parametreleri için Birden Çok Değeri İşleme

FastAPI, birden çok değer kabul edebilen bir sorgu parametresi tanımlamanıza olanak tanır. Bunu, parametre türünü bir liste olarak belirterek yapabilirsiniz:

from typing import List

@app.get("/items/")
async def read_items(q: List[str] = Query(default=[])):
    return {"q": q}

Bu durumda, istemci /items/?q=foo&q=bar&q=baz gibi bir istek yapabilir ve FastAPI değerleri bir liste halinde ayrıştıracaktır. Bu özellik, kullanıcıların sonuçları birden çok kritere göre filtrelemek istediği senaryolar için özellikle kullanışlıdır.

💡
API geliştirmenizi yükseltmek mi istiyorsunuz? Apidog'u deneyin. Bu güçlü araç, FastAPI projelerinizi ve daha fazlasını geliştirmek için mükemmeldir. Ücretsiz deneyin ve iş akışınızı nasıl kolaylaştırabileceğini ve verimliliği nasıl artırabileceğini görün
button

FastAPI Sorgu Parametrelerini Doğrulama

FastAPI, Query işlevini kullanarak sorgu parametreleri için yerleşik doğrulama sağlar. Minimum ve maksimum değerler, uzunluk kısıtlamaları ve regex desenleri gibi kısıtlamalar belirtebilirsiniz. İşte bir örnek:

@app.get("/items/")
async def read_items(
    q: str = Query(default=None, min_length=3, max_length=50),
    item_id: int = Query(ge=1, le=100)
):
    return {"q": q, "item_id": item_id}

Bu örnekte, q minimum 3 ve maksimum 50 uzunluğunda bir dize olmalıdır. item_id 1 ile 100 arasında bir tamsayı olmalıdır. FastAPI bu kısıtlamaları otomatik olarak doğrulayacak ve giriş belirtilen kriterleri karşılamıyorsa bir hata döndürecektir.

FastAPI ve OpenAPI ile Otomatik Belge Oluşturma

FastAPI kullanmanın öne çıkan avantajlarından biri, etkileşimli API belgelerinin otomatik olarak oluşturulmasını sağlayan OpenAPI ile sorunsuz entegrasyonudur. Bu özellik, API'nizin kullanılabilirliğini artırır ve API'nizi kullanan geliştiriciler için daha iyi bir deneyim sağlar. İşte FastAPI'nin bunu nasıl başardığına ve sorgu parametreleriniz için belgeleri nasıl geliştirebileceğinize daha yakından bir bakış.

OpenAPI Nedir?

OpenAPI, API'nizin yeteneklerini tanımlamanın standart bir yolunu sağlayan, API'ler oluşturmaya yönelik bir spesifikasyondur. Hem insanların hem de makinelerin, kaynak koduna erişmeden veya başka herhangi bir belge görmeden bir hizmetin yeteneklerini anlamasını sağlar. FastAPI, API uç noktalarınız için etkileşimli belgeleri otomatik olarak oluşturmak için bu spesifikasyondan yararlanır.

FastAPI Belgeleri Nasıl Oluşturur

FastAPI uygulamanızı ve uç noktalarını tanımladığınızda, FastAPI otomatik olarak işlev imzalarına ve tanımladığınız parametrelerin türlerine göre bir OpenAPI şeması oluşturur. Bu şema şunları içerir:

FastAPI ile Etkileşimli Belgeler Nasıl Kullanılır

FastAPI, kutudan çıktığı gibi iki etkileşimli belge arayüzü sağlar:

  1. Swagger UI: /docs adresinden erişilebilir, bu arayüz kullanıcıların API'nizin uç noktalarını keşfetmelerine, istek ve yanıt biçimlerini görüntülemelerine ve hatta uç noktaları doğrudan tarayıcıdan test etmelerine olanak tanır.
  2. ReDoc: /redoc adresinde mevcuttur, bu arayüz API belgelerinizin daha ayrıntılı ve yapılandırılmış bir görünümünü sağlar, çeşitli uç noktaları ve parametrelerini gezinmeyi ve anlamayı kolaylaştırır.

Her iki arayüz de, belgelerinizin kodunuzla her zaman güncel olmasını sağlayan, FastAPI tarafından oluşturulan OpenAPI şemasına göre otomatik olarak oluşturulur.

Sorgu Parametreleri için Belgeleri Geliştirme

FastAPI sorgu parametreleriniz için temel belgeler oluştururken, ayrıntılı açıklamalar, örnekler ve ek meta veriler sağlayarak daha da geliştirebilirsiniz. İşte nasıl:

  1. Açıklayıcı Metin: Her sorgu parametresinin ne işe yaradığını net bir şekilde açıklamak için Query işlevindeki description parametresini kullanın. Bu, özellikle API'nize aşina olmayan kullanıcılar için faydalıdır.
from fastapi import FastAPI, Query

app = FastAPI()

@app.get("/items/")
async def read_items(
    q: str | None = Query(default=None, description="Öğeleri filtrelemek için arama terimi."),
    skip: int = Query(default=0, ge=0, description="Atlanacak öğe sayısı."),
    limit: int = Query(default=10, le=100, description="Döndürülecek maksimum öğe sayısı.")
):
    return {"q": q, "skip": skip, "limit": limit}

2.  Örnekler: Sorgu parametrelerinizin nasıl kullanılabileceğini göstermek için örnekler sağlayın. Bu, özellikle karmaşık parametreler veya izlenmesi gereken belirli biçimler olduğunda kullanışlıdır.

@app.get("/items/")
async def read_items(
    q: str | None = Query(default=None, description="Öğeleri filtrelemek için arama terimi.", example="elma"),
    skip: int = Query(default=0, ge=0, description="Atlanacak öğe sayısı.", example=5),
    limit: int = Query(default=10, le=100, description="Döndürülecek maksimum öğe sayısı.", example=20)
):
    return {"q": q, "skip": skip, "limit": limit}

3.  Doğrulama Kısıtlamaları: Sorgu parametreleriniz için herhangi bir doğrulama kısıtlamasını açıkça belirtin. Bu, minimum ve maksimum değerleri, uzunluk kısıtlamalarını ve belirli biçimleri içerir. FastAPI bu doğrulamaları otomatik olarak işler, ancak bunları belgelemek, kullanıcıların sınırları anlamasına yardımcı olur.

4. Tür Açıklamaları: Sorgu parametreleriniz için uygun tür açıklamaları kullanın. FastAPI, belgelerde beklenen veri türlerini otomatik olarak oluşturmak için bu açıklamaları kullanır, bu da kullanıcıların ne tür veriler sağlamaları gerektiğini anlamalarına yardımcı olur.

5. İlgili Parametreleri Gruplandırma: API'niz birkaç ilgili sorgu parametresine sahipse, bunları mantıksal olarak gruplandırmayı düşünün. Bu, kullanıcıların parametrelerin birbiriyle nasıl etkileşimde bulunduğunu ve hangi kombinasyonların geçerli olduğunu anlamalarına yardımcı olabilir.

Geliştirilmiş Belgelerin Faydaları

  1. Geliştirilmiş Kullanılabilirlik: İyi belgelenmiş sorgu parametreleri, geliştiricilerin API'nizle nasıl etkileşim kuracaklarını anlamalarını kolaylaştırır. Bu, öğrenme eğrisini azaltır ve benimsemeyi artırır.
  2. Azaltılmış Destek Talepleri: Açık belgeler, yaygın soruları yanıtlamaya yardımcı olabilir ve API'nizi nasıl kullanacaklarını anlamaya çalışan kullanıcılardan aldığınız destek taleplerinin sayısını azaltabilir.
  3. Daha Hızlı Geliştirme: Geliştiriciler, uygulamalar oluştururken belgelere hızlı bir şekilde başvurabilir, bu da daha hızlı entegrasyon ve geliştirme döngülerine yol açar.
  4. Artan API Benimsenmesi: Kapsamlı ve kullanıcı dostu belgeler, API'nizi kullanmak için daha fazla geliştirici çekebilir, genel başarısını ve erişimini artırabilir.
  5. Tutarlılık: Otomatik belgeler, API belgelerinizin gerçek uygulamayla tutarlı olmasını sağlar ve bu da kafa karışıklığına yol açabilecek tutarsızlıkları azaltır.

FastAPI Sorgu Parametreleri için Gelişmiş Teknikler

FastAPI Sorgu Parametreleri için Enums Kullanma

Python Enums kullanarak FastAPI sorgu parametrelerini önceden tanımlanmış bir değer kümesiyle kısıtlayabilirsiniz. Bu, yalnızca belirli seçenekleri kabul etmesi gereken parametreler için kullanışlıdır:

from enum import Enum

class ItemType(str, Enum):
    fruit = "meyve"
    sebze = "sebze"
    sütürünleri = "sütürünleri"

@app.get("/items/")
async def read_items(item_type: ItemType):
    return {"item_type": item_type}

Bu örnekte, item_type sorgu parametresi yalnızca ItemType Enum'unda tanımlanan değerlerden biri olabilir. İstemci geçersiz bir değer sağlarsa, FastAPI 422 hatası döndürecektir.

Sorgu Parametresi Bağımlılıkları

FastAPI, birden çok uç nokta arasında mantığı yeniden kullanmanıza yardımcı olabilecek sorgu parametreleri için bağımlılıklar oluşturmanıza olanak tanır. Sorgu parametrelerine göre bir değer döndüren bir bağımlılık işlevi tanımlayabilirsiniz:

from fastapi import Depends

def query_param_dependency(q: str | None = None):
    return q if q else "varsayılan"

@app.get("/items/")
async def read_items(q: str = Depends(query_param_dependency)):
    return {"q": q}

Bu örnekte, query_param_dependency işlevi, q sorgu parametresinin sağlanıp sağlanmadığını kontrol eder. Değilse, varsayılan bir değer döndürür. Bu yaklaşım, kodun yeniden kullanılabilirliğini teşvik eder ve uç nokta işlevlerinizi temiz tutar.

FastAPI Sorgu Parametreleri için Hata İşleme

FastAPI, sorgu parametreleriyle ilgili hataları otomatik olarak işler. Gerekli bir sorgu parametresi eksikse veya bir parametre doğrulama başarısız olursa, FastAPI ayrıntılı bir hata mesajıyla 422 İşlenemeyen Varlık yanıtı döndürür. İstisna işleyicileri kullanarak hata işlemesini özelleştirebilirsiniz:

from fastapi import HTTPException

@app.get("/items/")
async def read_items(q: str | None = Query(default=None)):
    if q is None:
        raise HTTPException(status_code=400, detail="Sorgu parametresi 'q' gereklidir.")
    return {"q": q}

Bu örnek, gerekli bir sorgu parametresi sağlanmadığında özel bir HTTP istisnası nasıl yükseltilir gösterir. Bu yaklaşım, istemcilere daha bilgilendirici hata mesajları sağlamanıza olanak tanır.

FastAPI Sorgu Parametrelerini Test Etme

Sorgu parametrelerinizin beklendiği gibi çalıştığından emin olmak için FastAPI uygulamanızı test etmek çok önemlidir. FastAPI uç noktalarınızda testler yapmak için httpx kitaplığını kullanabilirsiniz. İşte bir örnek:

import httpx
import pytest

@pytest.mark.asyncio
async def test_read_items():
    async with httpx.AsyncClient() as client:
        response = await client.get("http://localhost:8000/items/?q=test&skip=0&limit=10")
        assert response.status_code == 200
        assert response.json() == {"q": "test", "skip": 0, "limit": 10}

Bu testte, sorgu parametreleriyle /items/ uç noktasına bir GET isteği gönderiyoruz ve yanıtın beklendiği gibi olduğunu iddia ediyoruz. Test, API'nizin FastAPI sorgu parametrelerini işlerken doğru davrandığından emin olmak için geliştirme sürecinin önemli bir parçasıdır.

Sonuç

FastAPI sorgu parametreleri, API uç noktalarınıza URL aracılığıyla ek veri geçirmenize olanak tanıyan güçlü bir özelliktir. FastAPI ile API'ler oluştururken esneklik, kullanılabilirlik ve performans avantajları sağlarlar. Bu kılavuzda, ayrıntılı örnekler kullanarak FastAPI sorgu parametrelerini nasıl tanımlayacağımızı, bunlara nasıl erişeceğimizi, nasıl doğrulayacağımızı ve nasıl belgeleyeceğimizi inceledik. İsteğe bağlı ve gerekli parametreler, birden çok değer, karmaşık türler ve otomatik belge oluşturma gibi konuları ele aldık. Ayrıca, gelişmiş teknikleri, hata işlemeyi, test etmeyi ve yaygın tuzakları da tartıştık. FastAPI sorgu parametrelerinden yararlanarak, birden çok özel uç noktaya ihtiyaç duymadan çeşitli filtreleme, sıralama ve sayfalama gereksinimlerini karşılayabilen daha esnek ve kullanıcı dostu API'ler oluşturabilirsiniz. API'nizin kullanıcılarınız için kullanımı kolay ve iyi belgelenmiş olmasını sağlamak için uygun parametre türlerini, doğrulamaları ve açıklamaları seçmeyi unutmayın. FastAPI'nin güçlü sorgu parametresi yetenekleri, API'nizin işlevselliğini ve kullanılabilirliğini önemli ölçüde artırabilir ve onu modern web uygulamaları için mükemmel bir seçim haline getirebilir.

FastAPI Hakkında Ek Kaynaklar

FastAPI sorgu parametreleri hakkındaki anlayışınızı daha da geliştirmek için aşağıdaki kaynakları keşfetmeyi düşünün:

  1. FastAPI Belgeleri: Resmi FastAPI belgeleri, sorgu parametreleri ve diğer özellikler hakkında kapsamlı bilgiler sağlar.
  2. FastAPI GitHub Deposu: Kaynak kodu, örnekler ve topluluk katkıları için FastAPI GitHub deposuna göz atın.
  3. FastAPI Eğitimleri: Bilgi ve becerilerinizi derinleştirmek için FastAPI'ye odaklanan çevrimiçi eğitimler ve kurslar arayın.

FastAPI sorgu parametreleri için bu en iyi uygulamaları ve teknikleri izleyerek, 2024 ve ötesinde kullanıcılarınızın ihtiyaçlarını karşılayan sağlam ve verimli API'ler oluşturabilirsiniz.

button

Explore more

Cursor ile Deepseek R1'i Yerel Olarak Nasıl Kullanılır

Cursor ile Deepseek R1'i Yerel Olarak Nasıl Kullanılır

Yerel DeepSeek R1'i Cursor IDE ile kurun ve yapılandırın. Özel, uygun maliyetli AI kodlama yardımı için.

4 June 2025

Android'de Gemma 3n Nasıl Çalıştırılır?

Android'de Gemma 3n Nasıl Çalıştırılır?

Google AI Edge Gallery'den Gemma 3n'i Android'e kurup çalıştırmayı öğrenin.

3 June 2025

GitHub Eylemleri ile Claude Kodunu Nasıl Kullanılır

GitHub Eylemleri ile Claude Kodunu Nasıl Kullanılır

Claude Code'u GitHub Actions ile entegre edin: Kod incelemeleri, hata düzeltmeleri ve özellik uygulamaları. Kurulum, iş akışları ve geliştiriciler için ipuçları.

29 May 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin