FastAPI ile API Ağ Geçidi Uygulama
İstekleri yönlendirmek ve birden çok mikro hizmetten gelen yanıtları birleştirmek için FastAPI kullanarak bir API Ağ Geçidi oluşturmayı öğrenin.
FastAPI ile API Ağ Geçidi Uygulama, CoddyKit'te ücretsiz bir FastAPI Backend Development Bootcamp dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, FastAPI Backend Development Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.
What's an API Gateway?
Mikro hizmetlerinizin bir alışveriş merkezindeki farklı dükkanlar olduğunu hayal edin. Bir API Ağ Geçidi (API Gateway) ise alışveriş merkezinin ana girişi veya danışma masası gibidir.
- Tüm istemci istekleri için tek bir giriş noktasıdır.
- İstekleri doğru arka uç (backend) hizmetine yönlendirir.
- Birden fazla hizmetten gelen yanıtları birleştirebilir.
- Kimlik doğrulama veya günlük kaydı gibi ortak görevleri yönetir.
Bu, istemci uygulamalarınızı daha basit tutar ve arka uç hizmetlerinizin odaklanmasını sağlar.
Why FastAPI for a Gateway?
FastAPI, modern özellikleri sayesinde bir API Ağ Geçidi oluşturmak için mükemmel bir seçimdir:
- Asenkron yapı: İstekleri engellemeden eşzamanlı olarak işleyebilir; bu da proxy işlemleri için mükemmeldir.
- Yüksek performans: Starlette ve Pydantic üzerine inşa edildiğinden çok hızlıdır.
- Kolay yönlendirme: FastAPI'nin sezgisel yönlendirme yapısı, istekleri yönlendirmeyi basitleştirir.
- Bağımlılık Enjeksiyonu: Paylaşılan kaynakları ve mantığı verimli bir şekilde yönetmeye yardımcı olur.
Hafif ve güçlü bir ters vekil sunucu (reverse proxy) görevi görür.
The Core Idea: Proxying Requests
Bir API Gateway'in temel görevi bir vekil (proxy) görevi görmektir. Bu, bir istemciden gelen isteği alıp bir arka uç (backend) hizmetine ilettiği ve ardından arka ucun yanıtını tekrar istemciye gönderdiği anlamına gelir.
FastAPI ağ geçidimiz içerisinden arka uç hizmetlerimize asenkron HTTP istekleri yapmak için Python'daki httpx kütüphanesini kullanacağız.
Öncelikle httpx kütüphanesinin yüklü olduğundan emin olun: pip install httpx
Basic GET Request Proxy
Halka açık bir dummy API'ye GET isteği yönlendiren basit bir FastAPI ağ geçidi oluşturalım. /proxy-todo ağ geçidi uç noktamız, jsonplaceholder.typicode.com adresinden bir yapılacaklar öğesi getirecektir.
import httpx
from fastapi import FastAPI
import uvicorn
app = FastAPI()
BACKEND_SERVICE_URL = "https://jsonplaceholder.typicode.com/todos/1"
@app.get("/proxy-todo")
async def proxy_todo_item():
async with httpx.AsyncClient() as client:
response = await client.get(BACKEND_SERVICE_URL)
response.raise_for_status() # Raises HTTPStatusError for 4xx/5xx responses
return response.json()
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)Forwarding Path Parameters
Arka uç servisleri genellikle URL'lerinde yol parametreleri olarak bilinen dinamik verilere ihtiyaç duyarlar. API Ağ Geçidiniz, istemci isteğinden bu parametreleri yakalamalı ve bunları doğru arka uç URL'sine iletmelidir.
Burada, todo_id değerini arka uca aktararak /proxy-todos/{todo_id} adresine gelen istekleri vekil sunucu (proxy) aracılığıyla yönlendiriyoruz.
import httpx
from fastapi import FastAPI
import uvicorn
app = FastAPI()
BACKEND_BASE_URL = "https://jsonplaceholder.typicode.com"
@app.get("/proxy-todos/{todo_id}")
async def proxy_todo_item_by_id(todo_id: int):
async with httpx.AsyncClient() as client:
backend_url = f"{BACKEND_BASE_URL}/todos/{todo_id}"
response = await client.get(backend_url)
response.raise_for_status()
return response.json()
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)Handling POST/PUT Request Bodies
POST veya PUT gibi istekler için istemciler, veriyi istek gövdesinde (request body) gönderirler. API Gateway'inizin bu gövdeyi alması ve arka uç servisine iletmesi gerekir. FastAPI'nin Request nesnesi, ham istek gövdesine erişmemizi sağlar.
JSON gövdesini almak ve onu httpx'e iletmek için request.json() kullanacağız.
import httpx
from fastapi import FastAPI, Request
import uvicorn
app = FastAPI()
BACKEND_POST_URL = "https://jsonplaceholder.typicode.com/posts"
@app.post("/proxy-post")
async def proxy_create_post(request: Request):
body = await request.json() # Get the raw JSON body from the client
async with httpx.AsyncClient() as client:
# Forward the body to the backend service
response = await client.post(BACKEND_POST_URL, json=body)
response.raise_for_status()
return response.json()
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)Aggregating Multiple Responses
Bir API Gateway'in güçlü bir özelliği yanıt birleştirmedir (response aggregation). Bu, ağ geçidinin birden fazla arka uç servisini çağırabileceği, bunların bireysel yanıtlarını birleştirebileceği ve istemciye tek bir birleşik yanıt döndürebileceği anlamına gelir.
Bu, bir istemcinin yapması gereken istek sayısını azaltır, istemci tarafındaki mantığı basitleştirir ve potansiyel olarak performansı artırır.
Example: User & Order Aggregation
Ağ geçidimizin bir arka uçtan kullanıcı ayrıntılarını, diğerinden ise bu kullanıcı için yapılacaklar listesini getirip bunları tek bir yanıtta birleştirdiği bir örneğe bakalım.
import httpx
from fastapi import FastAPI
import uvicorn
app = FastAPI()
BACKEND_USERS_URL = "https://jsonplaceholder.typicode.com/users"
BACKEND_TODOS_URL = "https://jsonplaceholder.typicode.com/todos"
@app.get("/user-with-todos/{user_id}")
async def get_user_with_todos(user_id: int):
async with httpx.AsyncClient() as client:
# Fetch user details
user_response = await client.get(f"{BACKEND_USERS_URL}/{user_id}")
user_response.raise_for_status()
user_data = user_response.json()
# Fetch todos for that user
todos_response = await client.get(f"{BACKEND_TODOS_URL}?userId={user_id}")
todos_response.raise_for_status()
todos_data = todos_response.json()
# Combine the data before returning
user_data["todos"] = todos_data
return user_data
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)Cross-Cutting Concerns at Gateway
API Ağ Geçitleri, yönlendirme ve kümelemenin yanı sıra kesişen kaygıları (cross-cutting concerns) ele almak için de mükemmeldir. Bunlar, birçok hizmetin ihtiyaç duyduğu ancak herhangi bir hizmetin iş mantığının merkezinde yer almayan özelliklerdir.
- Kimlik Doğrulama ve Yetkilendirme: Belirteçleri (token) ağ geçidinde bir kez doğrulayın.
- Günlükleme ve İzleme: Merkezi istek günlükleme.
- Hız Sınırlaması: Arka uç hizmetlerini aşırı yüklenmeden koruyun.
- Önbelleğe Alma: Teslimatı hızlandırmak için ortak yanıtları önbelleğe alın.
Bu, bireysel mikro hizmetlerin üzerindeki iş yükünü hafifletir.
Gateway Benefits Check
Mikro hizmet mimarisinde bir API Ağ Geçidi kullanmanın temel faydaları aşağıdakilerden hangileridir?
API Gateway with FastAPI Recap
FastAPI kullanarak güçlü bir API Gateway oluşturmayı öğrendiniz!
- Bir API Gateway'in ne olduğunu ve sağladığı avantajları anladık.
- Verimli proxy işlemleri için FastAPI'nin asenkron özelliklerinden yararlandık.
- Temel GET, yol parametresi ve POST gövdesi yönlendirmelerini uyguladık.
- Birden fazla arka uç servisinden gelen yanıtları nasıl birleştireceğimizi keşfettik.
- Ayrıca ağ geçitlerinin (gateway) ortak işlevleri (cross-cutting concerns) nasıl merkezileştirdiğini gördünüz.
FastAPI, mikro hizmet giriş noktanız için sağlam ve yüksek performanslı bir temel sağlar!
Sıkça Sorulan Sorular
“FastAPI ile API Ağ Geçidi Uygulama” dersi ücretsiz mi?
Evet — “FastAPI ile API Ağ Geçidi Uygulama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve FastAPI Backend Development Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.
“FastAPI ile API Ağ Geçidi Uygulama” dersinde ne öğreneceğim?
İstekleri yönlendirmek ve birden çok mikro hizmetten gelen yanıtları birleştirmek için FastAPI kullanarak bir API Ağ Geçidi oluşturmayı öğrenin. FastAPI Backend Development Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
FastAPI Backend Development Bootcamp öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te FastAPI Backend Development Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“FastAPI ile API Ağ Geçidi Uygulama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu FastAPI Backend Development Bootcamp dersinde kod yazıp çalıştırabilir miyim?
Evet. Her FastAPI Backend Development Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Mikro hizmet Mimarisi Tasarlama
- Hizmetler Arası İletişim
- FastAPI ile API Ağ Geçidi Uygulama
- Hizmet Keşfi ve Sağlık Denetimleri