Takip et

FastAPI’yi Sıfırdan, Sadece Python ile Gerçeklemek

FastAPI’yi Sıfırdan, Sadece Python ile Gerçeklemek

Merhaba! Ben Fatih Soysal ve bugün size oldukça heyecan verici bir konuyu ele alacağız: FastAPI’yi sıfırdan, sadece saf Python kullanarak geliştirmek. Bildiğiniz gibi FastAPI, Python dünyasında oldukça popüler ve performanslı bir web framework’üdür. Ancak, altında yatan mekanizmaları anlamak ve kendi basit versiyonunuzu oluşturmak, bu framework’ü çok daha iyi anlamanıza yardımcı olacaktır. Bu makalede, adım adım ilerleyeceğiz ve temel bir FastAPI benzeri uygulama oluşturacağız.

ASGI’nin Temelleri

Öncelikle, ASGI (Asynchronous Server Gateway Interface) kavramını anlamamız gerekmektedir. ASGI, Python’da eşzamansız (asenkron) web uygulamaları geliştirmek için bir standarttır. FastAPI, ASGI üzerine kurulu olduğu için, bizim de temel bir ASGI uyumlu sunucu oluşturmamız gerekecektir. Bu, gelen istekleri işleyen ve yanıtları geri gönderen bir fonksiyondan oluşacaktır. Sonrasında, bu sunucuyu HTTP isteklerini işleyecek şekilde genişleteceğiz.

Basit Bir ASGI Sunucusu

İşte basit bir ASGI sunucusunun Python kodu:


async def uygulama(scope, receive, send):
    if scope["type"] == "http":
        await send({
            "type": "http.response.start",
            "status": 200,
            "headers": [
                [b"content-type", b"text/plain"],
            ],
        })
        await send({
            "type": "http.response.body",
            "body": b"Merhaba Dünya!",
        })

Bu kod, gelen HTTP isteklerini yakalayan ve “Merhaba Dünya!” mesajını geri döndüren basit bir ASGI uygulamasıdır. Gördüğünüz gibi, oldukça yalındır ve ASGI standardını takip eder. Daha gelişmiş bir uygulama için, bu basit örneği genişletmemiz gerekecektir.

Rota Yöneticisi ve HTTP İşleme

Şimdi, gelen istekleri farklı yollara (rota) yönlendiren bir rota yöneticisi ekleyelim. Bunun için bir sözlük kullanabiliriz:


rotalar = {
    "/": lambda scope, receive, send: uygulama(scope, receive, send), # Daha önce yazdığımız uygulama fonksiyonunu kullanır
    "/merhaba": lambda scope, receive, send: merhaba_dünya(scope, receive, send)  # Yeni bir fonksiyon ekleyeceğiz
}

async def merhaba_dünya(scope, receive, send):
    await send({
        "type": "http.response.start",
        "status": 200,
        "headers": [
            [b"content-type", b"text/plain"],
        ],
    })
    await send({
        "type": "http.response.body",
        "body": b"Merhaba Dünya! Bu yeni bir rota.",
    })

Bu örnekte, “/” yoluna gelen istekleri ilk uygulamamız ile, “/merhaba” yoluna gelen istekleri ise yeni bir fonksiyon ile işliyoruz. Bu şekilde, basit bir rota yönlendirme mekanizması oluşturmuş olduk.

Daha Gelişmiş Özellikler

Bu basit uygulama, FastAPI’nin temel prensiplerini göstermektedir. Gerçek bir FastAPI uygulamasında, daha birçok özellik bulunur: bağımlılık enjeksiyonu, veri doğrulama, otomatik belgelendirme, vs. Ancak, bu temel yapı bloklarının anlaşılması, daha gelişmiş özelliklerin anlaşılmasını da kolaylaştırır. Bu makalede, temel konulara odaklandık ve kendi basit FastAPI benzeri uygulamanızı oluşturmanız için gereken bilgiyi sağladık. Daha fazla bilgi için fatihsoysal.com sitesini ziyaret edebilirsiniz. Unutmayın, sürekli öğrenmek ve uygulamak önemlidir! Öğrendiklerinizi pratiğe dökerek daha iyi sonuçlar alabilirsiniz.

Umarım bu makale yararlı olmuştur! Herhangi bir sorunuz veya yorumunuz varsa, lütfen paylaşmaktan çekinmeyin.

#Etiketler: FastAPI, Python, ASGI, Web Framework, HTTP, Sıfırdan Geliştirme, Programlama, Tutorial, Web Uygulamaları, API Geliştirme

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.