Movatterモバイル変換


[0]ホーム

URL:


Ana içeriğe geç
Join theFastAPI Cloud waiting list 🚀
Follow@fastapi onX (Twitter) to stay updated
FollowFastAPI onLinkedIn to stay updated
Subscribe to theFastAPI and friends newsletter 🎉
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor

İleri Seviye Middleware

🌐 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

Ana tutorial'da uygulamanızaÖzel Middleware eklemeyi gördünüz.

ArdındanCORSMiddleware ile CORS'u yönetmeyi de okudunuz.

Bu bölümde diğer middleware'leri nasıl kullanacağımıza bakacağız.

ASGI middleware'leri ekleme

FastAPI, Starlette üzerine kurulu olduğu veASGI spesifikasyonunu uyguladığı için, herhangi bir ASGI middleware'ini kullanabilirsiniz.

Bir middleware'in çalışması için özellikle FastAPI ya da Starlette için yazılmış olması gerekmez; ASGI spec'ine uyduğu sürece yeterlidir.

Genel olarak ASGI middleware'leri, ilk argüman olarak bir ASGI app almayı bekleyen class'lar olur.

Dolayısıyla üçüncü taraf ASGI middleware'lerinin dokümantasyonunda muhtemelen şöyle bir şey yapmanızı söylerler:

fromunicornimportUnicornMiddlewareapp=SomeASGIApp()new_app=UnicornMiddleware(app,some_config="rainbow")

Ancak FastAPI (aslında Starlette) bunu yapmanın daha basit bir yolunu sunar; böylece dahili middleware'ler server hatalarını doğru şekilde ele alır ve özel exception handler'lar düzgün çalışır.

Bunun içinapp.add_middleware() kullanırsınız (CORS örneğindeki gibi).

fromfastapiimportFastAPIfromunicornimportUnicornMiddlewareapp=FastAPI()app.add_middleware(UnicornMiddleware,some_config="rainbow")

app.add_middleware() ilk argüman olarak bir middleware class'ı alır ve middleware'e aktarılacak ek argümanları da kabul eder.

Entegre middleware'ler

FastAPI, yaygın kullanım senaryoları için birkaç middleware içerir; şimdi bunları nasıl kullanacağımıza bakacağız.

Teknik Detaylar

Bir sonraki örneklerdefrom starlette.middleware.something import SomethingMiddleware kullanmanız da mümkündür.

FastAPI, size (geliştirici olarak) kolaylık olsun diyefastapi.middleware içinde bazı middleware'leri sağlar. Ancak mevcut middleware'lerin çoğu doğrudan Starlette'ten gelir.

HTTPSRedirectMiddleware

Gelen tüm request'lerinhttps veyawss olmasını zorunlu kılar.

http veyaws olarak gelen herhangi bir request, bunun yerine güvenli şemaya redirect edilir.

fromfastapiimportFastAPIfromfastapi.middleware.httpsredirectimportHTTPSRedirectMiddlewareapp=FastAPI()app.add_middleware(HTTPSRedirectMiddleware)@app.get("/")asyncdefmain():return{"message":"Hello World"}

TrustedHostMiddleware

HTTP Host Header saldırılarına karşı korunmak için, gelen tüm request'lerdeHost header'ının doğru ayarlanmış olmasını zorunlu kılar.

fromfastapiimportFastAPIfromfastapi.middleware.trustedhostimportTrustedHostMiddlewareapp=FastAPI()app.add_middleware(TrustedHostMiddleware,allowed_hosts=["example.com","*.example.com"])@app.get("/")asyncdefmain():return{"message":"Hello World"}

Aşağıdaki argümanlar desteklenir:

  • allowed_hosts - Hostname olarak izin verilmesi gereken domain adlarının listesi.*.example.com gibi wildcard domain'ler subdomain eşleştirmesi için desteklenir. Herhangi bir hostname'e izin vermek içinallowed_hosts=["*"] kullanın veya middleware'i hiç eklemeyin.
  • www_redirect - True olarak ayarlanırsa, izin verilen host'ların www olmayan sürümlerine gelen request'ler www sürümlerine redirect edilir. VarsayılanıTrue'dur.

Gelen bir request doğru şekilde doğrulanmazsa400 response gönderilir.

GZipMiddleware

Accept-Encoding header'ında"gzip" içeren herhangi bir request için GZip response'larını yönetir.

Middleware hem standart hem de streaming response'ları ele alır.

fromfastapiimportFastAPIfromfastapi.middleware.gzipimportGZipMiddlewareapp=FastAPI()app.add_middleware(GZipMiddleware,minimum_size=1000,compresslevel=5)@app.get("/")asyncdefmain():return"somebigcontent"

Aşağıdaki argümanlar desteklenir:

  • minimum_size - Bayt cinsinden bu minimum boyuttan küçük response'lara GZip uygulama. Varsayılanı500'dür.
  • compresslevel - GZip sıkıştırması sırasında kullanılır. 1 ile 9 arasında bir tamsayıdır. Varsayılanı9'dur. Daha düşük değer daha hızlı sıkıştırma ama daha büyük dosya boyutları üretir; daha yüksek değer daha yavaş sıkıştırma ama daha küçük dosya boyutları üretir.

Diğer middleware'ler

Başka birçok ASGI middleware'i vardır.

Örneğin:

Diğer mevcut middleware'leri görmek içinStarlette'in Middleware dokümanlarına veASGI Awesome List listesine bakın.


[8]ページ先頭

©2009-2026 Movatter.jp