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