0Pricing
FastAPI Backend Development Bootcamp · Ders

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

  1. Mikro hizmet Mimarisi Tasarlama
  2. Hizmetler Arası İletişim
  3. FastAPI ile API Ağ Geçidi Uygulama
  4. Hizmet Keşfi ve Sağlık Denetimleri
← FastAPI Backend Development Bootcamp Sayfasına Dön