Skip to content

0Baris/fastapi-blog-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 Blog API

Bu proje, FastAPI kullanılarak geliştirilmiş bir Blog API'sidir. Kullanıcıların blog yazıları oluşturmasına, düzenlemesine, silmesine ve yorum yapmasına olanak tanır.

Not: Herhangi bir hata ile karşılaşırsanız bana bariscem@proton.me adresinden ulaşabilirsiniz. Sorununuzu çözmekten memnuniyet duyarım.


✨ Özellikler

  • Kullanıcı Yönetimi:

    • Kullanıcı oluşturma.
    • Kullanıcı listeleme.
    • Tekil kullanıcı getirme.
  • Kategori Yönetimi:

    • Kategori oluşturma.
    • Kategori düzenleme.
    • Kategori silme.
    • Tüm kategorileri listeleme.
  • Blog Yazı Yönetimi:

    • Yazı oluşturma.
    • Yazı düzenleme.
    • Yazı silme.
    • Tüm yazıları listeleme.
    • Tekil yazı getirme.
    • Yazıya ait tüm yorumları listeleme.
  • Yorum Yönetimi:

    • Yorum oluşturma.
    • Yorum silme.
  • Güvenlik:

    • Kullanıcı parolaları için güvenli hashleme (bcrypt).
    • Ortam değişkenleriyle veritabanı bağlantı bilgilerini yönetme.
  • Mail Entragrasyonu:

    • Kullanıcı yeni hesap oluştururken onay e-postası gönderme simülasyonu yapar.
    • Yeni bir yorum eklendiği zaman gönderi sahibine bilgilendirme yapar.

🛠️ Teknolojiler

  • Backend:

    • FastAPI: Modern, hızlı ve kolay bir Python frameworkü.
    • SQLAlchemy: Python için güçlü bir ORM.
    • PostgreSQL: Güçlü bir ilişkisel veritabanı sistemine dayalı.
    • bcrypt: Parola hashleme işlemleri için kullanılır.
    • Celery: Asenkron görev kuyruğu ve dağıtılmış görev işleme sistemi.
    • Redis: Hızlı, açık kaynaklı, bellek içi veri yapısı deposu.
  • Diğer:

    • Pydantic V2: Veri doğrulama ve seri hale getirme işlemleri için.
    • Docker: Uygulamanın konteynerize edilmesi için.
    • Docker Compose: Birden fazla servisi kolayca yönetmek için.

🚀 Adım Adım Kurulum (Docker ile)

Gereksinimler

  • Docker Kurulumu: Projenin çalışması için Docker'in kurulu olması gerekmektedir.
  • Docker Compose Kurulumu: Servisleri bir arada yönetmek için Docker Compose'in kurulu olması gerekmektedir.

Adımlar

  1. Proje Deposu Klonlama:

    git clone https://github.com/0Baris/fastapi-blog-api.git
    cd fastapi-blog-api
  2. .env Dosyasını Oluşturma ve Yapılandırma:

    Projenin kök dizininde .env dosyası oluşturun ve aşağıdaki ortam değişkenlerini ekleyin:

     POSTGRES_USER=blog_user  # PostgreSQL kullanıcı adı
     POSTGRES_PASSWORD=blog_pass  # PostgreSQL şifresi
     POSTGRES_DB=blog_db  # PostgreSQL veritabanı adı
     DATABASE_URL=postgresql://blog_user:blog_pass@db:5432/blog_db  # Veritabanı bağlantısı
     
     CELERY_BROKER_URL=redis://localhost:6379/0  # Celery broker (Redis) URL'i
     CELERY_RESULT_BACKEND=redis://localhost:6379/0  # Celery sonuç backend'i (Redis) URL'i
    
     MAIL_USERNAME=xyz@gmail.com  # E-posta gönderme kullanıcı adı
     MAIL_PASSWORD=apppasword  # E-posta gönderme şifresi (uygulama şifresi)
     MAIL_FROM=xyz@gmail.com  # Gönderen e-posta adresi
     MAIL_PORT=587  # E-posta sunucu portu
     MAIL_SERVER=smtp.gmail.com  # E-posta sunucu adresi
     MAIL_FROM_NAME="Blog API"  # Gönderen adı
     MAIL_TLS=True  # TLS şifrelemesi kullanılsın mı?
     MAIL_SSL=False  # SSL şifrelemesi kullanılsın mı?
  3. Docker Konteynerlerini Başlatma:

    docker compose up --build

    Bu komut, Docker imajlarını oluşturur ve konteynerleri başlatır.

  4. Geliştirme Sunucusuna Erişim:

    Tarayıcıda http://localhost:8000/docs veya http://localhost:8000/redoc adreslerinden API dokümantasyonuna ulaşabilirsiniz.


📖 API Kullanımı

Aşağıda, API endpoint'leri ve nasıl kullanılacakları açıklanmıştır.

Kullanıcı İşlemleri

  • Tüm Kullanıcıları Getirme:

    • Endpoint: /api/v1/users/
    • Yöntem: GET
  • Tekil Kullanıcıyı Getirme:

    • Endpoint: /api/v1/users/{user_id}
    • Yöntem: GET
  • Kullanıcı Oluşturma:

    • Endpoint: /api/v1/users/
    • Yöntem: POST
    • İstek Gövdesi:
      {
          "username": "test",
          "email": "test@example.com",
          "password": "benbirsifreyim123"
      }

Kategori İşlemleri

  • Tüm Kategorileri Getirme:

    • Endpoint: /api/v1/category/
    • Yöntem: GET
  • Tekil Kategori Getirme:

    • Endpoint: /api/v1/category/{category_id}
    • Yöntem: GET
  • Kategori Oluşturma:

    • Endpoint: /api/v1/category/
    • Yöntem: POST
    • İstek Gövdesi:
      {
          "title": "Teknoloji"
      }
  • Kategori Güncelleme:

    • Endpoint: /api/v1/category/update/{category_id}
    • Yöntem: PUT
    • İstek Gövdesi:
      {
          "title": "Yeni Kategori"
      }
  • Kategori Silme:

    • Endpoint: /api/v1/categories/delete/{category_id}
    • Yöntem: DELETE

Blog Yazı İşlemleri

  • Tüm Yazıları Getirme:

    • Endpoint: /api/v1/posts/
    • Yöntem: GET
  • Tekil Yazı Getirme:

    • Endpoint: /api/v1/posts/{post_id}
    • Yöntem: GET
  • Yazı Oluşturma:

    • Endpoint: /api/v1/posts/
    • Yöntem: POST
    • İstek Gövdesi:
      {
          "title": "Python ile FastAPI Kullanımı",
          "content": "FastAPI, modern bir Python frameworküdür.",
          "category_id": 1,
          "author_id": 1
      }
  • Yazı Güncelleme:

    • Endpoint: /api/v1/posts/update/{post_id}
    • Yöntem: PUT
    • İstek Gövdesi:
      {
          "title": "Güncellenmiş Yazı Başlığı",
          "content": "Güncellenmiş yazı içeriği."
      }
  • Yazı Silme:

    • Endpoint: /api/v1/posts/delete/{post_id}
    • Yöntem: DELETE

Yorum İşlemleri

  • Yorum Ekleme:

    • Endpoint: /api/v1/comments/{post_id}/add
    • Yöntem: POST
    • İstek Gövdesi:
      {
          "content": "Bu bir test yorumudur.",
          "author_id": 1
      }
  • Yorum Silme:

    • Endpoint: /api/v1/comments/{post_id}/delete
    • Yöntem: DELETE

🤝 Katkıda Bulunma

Katkıda bulunmak isterseniz, lütfen aşağıdaki adımları izleyin:

  1. Fork'layın: Projeyi GitHub'da forklayın.

  2. Yeni Bir Dal Oluşturun:

    git checkout -b feature/your-feature-name
  3. Değişiklikleri Yapın ve Commit Edin:

    git add .
    git commit -m "Özellik: Yeni özellik eklendi."
  4. Dalınızı Push Edin:

    git push origin feature/your-feature-name
  5. Pull Request Oluşturun: GitHub üzerinden orijinal depoya pull request açın ve değişikliklerinizi açıklayın.


📜 Lisans

Bu proje MIT Lisansı altında lisanslanmıştır.


📚 Kaynakça


🔍 Hata Ayıklama

Eğer uygulama çalışmadıysa, aşağıdaki adımları izleyin:

  1. Logları Kontrol Edin:

    • Docker loglarını kontrol etmek için:
      docker compose logs app
    • PostgreSQL loglarını kontrol etmek için:
      docker compose logs db
  2. Ortam Değişkenlerini Doğrulayın:

    • .env dosyasındaki yapılandırmaların doğru olduğundan emin olun.
  3. Dockerfile'i ve docker-compose.yml'i Denetleyin:

    • Dockerfile ve docker-compose.yml dosyalarının son güncellemeyle uyumlu olduğundan emin olun.
  4. Pydantic Modellerini Yeniden Oluşturun:

    • Eğer Pydantic V2 kullanıyorsanız, modellerinizde from_attributes = True kullanıldığından emin olun.
    • İlişkiler için .rebuild() yöntemini çağırın.

🙌 İletişim

Projeyle ilgili sorularınız, önerileriniz veya geri bildirimleriniz için bana ulaşabilirsiniz:

About

Fastapi kullanılarak geliştirilmiş basit bir Blog API'si

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages