Ana içeriğe geç

Request'i Doğrudan Kullanmak

🌐 Translation by AI and humans

This translation was made by AI guided by humans. 🤝

It could have mistakes of misunderstanding the original meaning, or looking unnatural, etc. 🤖

You can improve this translation by helping us guide the AI LLM better.

English version

Ş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.