Python ile Flask’a Giriş: Basit Sunucudan SQLite REST API’ye Yolculuk

Modern web geliştirme dünyasında hız ve esneklik her şeydir. Python’ın en popüler mikro web çerçevelerinden (micro-framework) biri olan Flask, hem yeni başlayanlar için öğrenme eğrisi düşük bir giriş noktası sunuyor hem de profesyonel projeler için gereken gücü sağlıyor. Peki, sadece birkaç satır kodla nasıl çalışan bir web sunucusu kurabilir ve bunu gerçek bir veritabanıyla nasıl konuşturabilirsiniz?

Flask ile Web Dünyasına İlk Adım

Bu projede, Flask’ın gücünü iki farklı seviyede inceliyoruz. İlk aşamada, sadece “merhaba” diyen minimal bir sunucu kurarken; ikinci aşamada, SQLite veritabanı ile entegre, tam fonksiyonel bir REST API (Temsili Durum Aktarımı Uygulaması) geliştiriyoruz. Bu yolculuk, basit bir rota tanımlamasından, karmaşık veritabanı sorgularına ve dinamik veri güncellemelerine kadar uzanıyor.

Kodun Anatomisi

Proje iki ana bölümden oluşuyor: Minimal Sunucu ve SQLite REST API.

1. Minimal Sunucu Yapısı

Minimal sunucuda temel amaç, bir URL isteğine karşılık uygun cevabı döndürmektir. Burada flask_helpers.py dosyası kullanılarak rotalar (routes) modüler hale getirilmiştir.

# Flask route handler örneği
from flask import jsonify

def setup_routes(app):
    @app.route('/')
    def index():
        return 'Hello from Python + Flask!'

    @app.route('/ping')
    def ping():
        # jsonify ile Python sözlüğünü JSON formatına dönüştürüyoruz
        return jsonify({'status': 'ok', 'message': 'Python + Flask is running!'})

2. SQLite REST API ve Veritabanı Yönetimi

İşlerin ciddileştiği nokta burası. 02_flask_sqlite_api.py dosyasında, uygulama başladığında veritabanının otomatik olarak oluşturulması ve örnek verilerle doldurulması (seeding) sağlanıyor.

Kilit Özellikler:

  • Veritabanı Bağlantısı: sqlite3.Row kullanılarak veritabanı sonuçlarına sütun isimleriyle erişim sağlanıyor.
  • REST Prensipleri: Kaynaklar üzerinde işlem yapmak için standart HTTP metodları (GET, POST, PUT, DELETE) kullanılıyor.
  • İlişkisel Sorgular: Kitaplar ve yazarlar arasındaki ilişkiyi yönetmek için JOIN sorguları kullanılıyor.
  • Dinamik SQL: PUT isteğiyle gelen sadece belirli alanların güncellenmesi için dinamik bir SQL cümlesi oluşturuluyor.
# Dinamik güncelleme mantığından bir kesit
allowed = ['title', 'year', 'genre', 'rating']
fields = {k: v for k, v in data.items() if k in allowed}
set_clause = ', '.join(f'{k} = ?' for k in fields)
values = list(fields.values()) + [book_id]

conn.execute(f"UPDATE books SET {set_clause} WHERE id = ?", values)

Nasıl Çalıştırılır?

Uygulamayı kendi bilgisayarınızda denemek için şu adımları izleyin:

  1. Gereksinimleri Yükleyin:
   pip install flask
  1. Minimal Sunucuyu Başlatın:
   python 01_flask_hello.py

Ardından tarayıcınızdan http://localhost:8117 adresine gidin.

  1. REST API’yi Başlatın:
   python 02_flask_sqlite_api.py

API’yi test etmek için curl veya Postman kullanabilirsiniz. Örneğin tüm kitapları listelemek için:

   curl http://localhost:8117/api/books

Ne Öğrendik?

Bu proje ile birlikte web geliştirmenin temel taşlarını deneyimledik:

  • Web Rotalama: URL’leri Python fonksiyonlarına nasıl bağlayacağımızı öğrendik.
  • JSON Veri Transferi: Modern API’lerin standart dili olan JSON ile veri alışverişi yaptık.
  • SQLite Entegrasyonu: Dosya tabanlı bir veritabanı ile nasıl etkileşime geçileceğini gördük.
  • CRUD Operasyonları: Create (Oluştur), Read (Oku), Update (Güncelle) ve Delete (Sil) işlemlerinin REST standartlarında nasıl kurgulandığını uyguladık.
  • Hata Yönetimi: Kaynak bulunamadığında 404 veya hatalı isteklerde 400 gibi uygun HTTP durum kodlarını döndürmeyi deneyimledik.

Kaynaklar ve Sonraki Adımlar

Flask dünyasını daha derinlemesine keşfetmek için resmi Flask Dokümantasyonu‘na göz atabilirsiniz. Bir sonraki adım olarak bu API’ye bir kimlik doğrulama (Authentication) katmanı eklemeyi veya basit bir HTML/CSS ön yüz (Frontend) tasarlamayı deneyebilirsiniz.

Ahmet Aksoy

Not: Bu yazıda incelediğimiz kodu ve benzer projelerin kaynak kodlarını https://github.com/ahmetax/practical-python-examples adresinde bulabilirsiniz.

python, python programlama, python öğren, yazılım, kod, flask, rest api, sqlite, veritabanı, web geliştirme, başlangıç seviyesi, backend

Leave a Reply

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