Ana içeriğe geç

Request'i Doğrudan Kullanmak

🌐 Yapay Zekâ ve İnsanlar Tarafından Çeviri

Bu çeviri, insanlar tarafından yönlendirilen bir yapay zekâ ile oluşturuldu. 🤝

Orijinal anlamın yanlış anlaşılması ya da kulağa doğal gelmeme gibi hatalar içerebilir. 🤖

Yapay zekâ LLM'ini daha iyi yönlendirmemize yardımcı olarak bu çeviriyi iyileştirebilirsiniz.

İngilizce sürüm

Şu ana kadar, ihtiyacınız olan request parçalarını tipleriyle birlikte tanımlıyordunuz.

Verileri şuradan alarak:

  • path'ten parameter olarak.
  • Header'lardan.
  • Cookie'lerden.
  • vb.

Bunu yaptığınızda FastAPI, bu verileri doğrular (validate eder), dönüştürür ve API'niz için dokümantasyonu otomatik olarak üretir.

Ancak bazı durumlarda Request nesnesine doğrudan erişmeniz gerekebilir.

Request nesnesi hakkında detaylar

FastAPI aslında altta Starlette çalıştırır ve üstüne çeşitli araçlardan oluşan bir katman ekler. Bu yüzden gerektiğinde Starlette'in Request nesnesini doğrudan kullanabilirsiniz.

Bu ayrıca şu anlama gelir: Request nesnesinden veriyi doğrudan alırsanız (örneğin body'yi okursanız) FastAPI bu veriyi doğrulamaz, dönüştürmez veya dokümante etmez (otomatik API arayüzü için OpenAPI ile).

Buna rağmen normal şekilde tanımladığınız diğer herhangi bir parameter (örneğin Pydantic model ile body) yine doğrulanır, dönüştürülür, annotate edilir, vb.

Ama bazı özel durumlarda Request nesnesini almak faydalıdır.

Request nesnesini doğrudan kullanın

Path operation function içinde client'ın IP adresini/host'unu almak istediğinizi düşünelim.

Bunun için request'e doğrudan erişmeniz gerekir.

from fastapi import FastAPI, Request

app = FastAPI()


@app.get("/items/{item_id}")
def read_root(item_id: str, request: Request):
    client_host = request.client.host
    return {"client_host": client_host, "item_id": item_id}

Tipi Request olan bir path operation function parameter'ı tanımladığınızda FastAPI, o parameter'a Request nesnesini geçmesi gerektiğini anlar.

İpucu

Bu örnekte, request parameter'ının yanında bir path parameter'ı da tanımladığımıza dikkat edin.

Dolayısıyla path parameter'ı çıkarılır, doğrulanır, belirtilen tipe dönüştürülür ve OpenAPI ile annotate edilir.

Aynı şekilde, diğer parameter'ları normal biçimde tanımlamaya devam edip buna ek olarak Request de alabilirsiniz.

Request dokümantasyonu

Resmi Starlette dokümantasyon sitesinde Request nesnesiyle ilgili daha fazla detayı okuyabilirsiniz.

Teknik Detaylar

from starlette.requests import Request de kullanabilirsiniz.

FastAPI bunu size (geliştiriciye) kolaylık olsun diye doğrudan sunar. Ancak kendisi doğrudan Starlette'ten gelir.