Bu proje, Python'da Nesne Yönelimli Programlama (OOP), harici API kullanımı ve FastAPI ile kendi web servisini oluşturma konularını birleştiren kapsamlı bir kütüphane yönetim uygulamasıdır. Proje, temel bir terminal uygulamasından başlayarak, web arayüzüne ve en sonunda bir Docker konteynerine dönüştürülmüştür.
OOP: Book ve Library sınıfları kullanılarak kod, modüler ve yönetilebilir bir yapıda tasarlanmıştır.
Harici API Entegrasyonu: Open Library API'si üzerinden ISBN numarasıyla kitap bilgileri otomatik olarak çekilir.
Veritabanı: Veriler, kalıcı olarak bir SQLite veritabanında saklanır.
RESTful API: FastAPI ile kitapları listeleme, ekleme, silme ve güncelleme işlemleri için RESTful endpoint'ler oluşturulmuştur.
Web Arayüzü: Kendi API'mizi kullanan, HTML, CSS ve JavaScript ile geliştirilmiş basit bir yönetim paneli mevcuttur.
Docker Desteği: Proje, bir Docker konteyneri içinde çalıştırılabilir.
Bu projeyi çalıştırmak için öncelikle bilgisayarınızda Python 3.9+ ve Docker yüklü olmalıdır.
Projeyi bilgisayarınıza indirmek için aşağıdaki komutu kullanabilirsiniz:
git clone https://github.com/akdoganhilal/python202_libraryprj.git cd python202_libraryprj
Projenin çalışması için gerekli Python kütüphanelerini kurun: pip install -r requirements.txt
Docker, tüm bağımlılıkları otomatik olarak kurar ve sanal ortam oluşturmanıza gerek kalmaz. Projeyi en kolay çalıştırma yöntemidir.
Proje klasörünün ana dizinindeyken aşağıdaki komutu çalıştırın: docker build -t kutuphane-uygulamasi .
Görüntü oluşturulduktan sonra uygulamayı başlatın: docker run -p 8000:8000 kutuphane-uygulamasi
API'niz artık http://localhost:8000 adresinde çalışmaktadır.
Projenin konsol tabanlı versiyonunu başlatmak için (API servisi çalışmıyorken): python main.py
Web servisini başlatmak ve API üzerinden erişim sağlamak için (Docker kullanmıyorsanız): uvicorn api:app --reload
Bu komutu çalıştırdıktan sonra API'nin dokümantasyonuna http://localhost:8000/docs adresinden erişebilirsiniz.
API servisi çalıştıktan sonra, projenin ana dizinindeki frontend/index.html dosyasını tarayıcınızda açın. Bu sayfa üzerinden kitap ekleme, silme ve güncelleme işlemlerini görsel olarak gerçekleştirebilirsiniz.
GET /books: Kütüphanedeki tüm kitapların listesini döndürür.
GET /books/{isbn}: Belirtilen ISBN'e sahip kitabı getirir.
POST /books: Yeni bir kitabı API'den çekerek ekler. Gövde Örneği: {"isbn": "9780451524935"}
PUT /books/{isbn}: Bir kitabın başlık ve/veya yazar bilgilerini günceller. Gövde Örneği: {"title": "Yeni Başlık"}
DELETE /books/{isbn}: Belirtilen ISBN'e sahip kitabı siler.
Projenin güvenilirliğini sağlamak için pytest ile birim ve API testleri yazılmıştır. Terminalde aşağıdaki komutu çalıştırarak tüm testleri çalıştırabilirsiniz:
pytest