Bu proje, Global AI Hub Python 202 Bootcamp kapsamında geliştirilmiş, üç aşamalı bir kütüphane yönetim sistemidir. Uygulama, komut satırı arayüzü (CLI) olarak başlar, harici bir API ile zenginleştirilir ve son olarak modern bir web servisi haline getirilir.
- Terminal Uygulaması: Kullanıcı dostu, interaktif bir komut satırı arayüzü ile kitap ekleme, silme, listeleme ve arama işlemleri.
- API Entegrasyonu: Open Library API üzerinden ISBN'e göre kitap bilgilerini otomatik olarak çeker.
- Hata Yönetimi: API bağlantı hataları, bulunamayan kitaplar ve diğer istisnalar için sağlam hata yakalama mekanizması.
- Veri Kalıcılığı: Kütüphanedeki kitaplar
library.jsondosyasına kaydedilir ve uygulama her başlatıldığında yüklenir. - RESTful API: FastAPI kullanılarak HTTP üzerinden erişilebilen, tam özellikli bir web servisi.
- Otomatik Dokümantasyon: OpenAPI ve Swagger UI ile otomatik olarak oluşturulan interaktif API dokümantasyonu.
- Aşama 1 (OOP):
BookveLibrarysınıfları ile nesne yönelimli temel kütüphane mantığı oluşturuldu. - Aşama 2 (API Entegrasyonu):
api_utils.pyile Open Library API'ye bağlanarak kitap verileri zenginleştirildi. - Aşama 3 (FastAPI):
api.pydosyası ile projenin işlevselliği, bir web servisi olarak sunuldu.
Projenin bağımlılıklarını kurmak ve yerel bilgisayarınızda çalıştırmak için aşağıdaki adımları izleyin.
- Python 3.8+
- Git
-
Repoyu Klonlama
git clone [https://github.com/ozlemeker/FastAPI-Pylibrary.git](https://github.com/ozlemeker/FastAPI-Pylibrary.git) cd FastAPI-Pylibrary -
Sanal Ortam Oluşturma ve Etkinleştirme
python -m venv .venv # Windows için: .venv\Scripts\activate # macOS/Linux için: source .venv/bin/activate
-
Bağımlılıkları Yükleme
pip install -r requirements.txt
Terminal uygulamasını başlatmak için main.py dosyasını çalıştırın.
python main.py
API Sunucusu (Aşama 3) API sunucusunu başlatmak için uvicorn komutunu kullanın. Sunucu, http://127.0.0.1:8000 adresinde çalışacaktır.
uvicorn api:app --reload
API çalışırken, otomatik olarak oluşturulan interaktif dokümantasyona http://127.0.0.1:8000/docs adresinden erişebilirsiniz.
- Kitapları Listele Endpoint: GET /books
Açıklama: Kütüphanedeki tüm kitapların listesini döndürür.
Örnek Yanıt: [ { "title": "Harry Potter and the Sorcerer's Stone", "author": "J.K. Rowling", "isbn": "9780590353427" } ]
- Kitap Ekle Endpoint: POST /books
Açıklama: Belirtilen ISBN'e göre Open Library API'den kitap bilgilerini çeker ve kütüphaneye ekler.
İstek Gövdesi (Request Body): { "isbn": "9780321765723" }
Başarılı Yanıt: { "title": "The Lord of the Rings", "author": "J.R.R. Tolkien", "isbn": "9780321765723" }
- Kitap Sil Endpoint: DELETE /books/{isbn}
Açıklama: Belirtilen ISBN'e sahip kitabı kütüphaneden siler.
Örnek Kullanım: DELETE /books/9780321765723
Başarılı yanıt: { "message": "Kitap başarıyla silindi." }
📂 Proje Yapısı . ├── api.py ├── api_utils.py ├── book.py ├── library.py ├── main.py ├── requirements.txt ├── pytest.ini ├── test_api_utils.py └── test_library.py 💻 Kullanılan Teknolojiler Python
FastAPI: Web servisi oluşturmak için.
Uvicorn: ASGI sunucusu olarak.
Httpx: Asenkron HTTP istekleri için.
Pydantic: Veri doğrulama ve API modelleri için.
pytest: Testler için.
Yazar: [ÖZLEM EKER] mail : oozlemeker@gmail.com