Skip to content

jhonoryza/python-fastapi-blog-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Blog API dengan FastAPI

REST API untuk aplikasi blog yang dibangun dengan FastAPI, SQLAlchemy, dan PostgreSQL.

Fitur

  • Autentikasi JWT
  • Manajemen pengguna (admin dan penulis)
  • Manajemen artikel blog (post)
  • Kategori dan tag
  • Komentar (termasuk komentar anonim)
  • Upload thumbnail untuk artikel
  • Endpoint publik untuk konten yang dipublikasikan
  • Dokumentasi API dengan OpenAPI 3

Persyaratan

  • Python 3.8+
  • PostgreSQL
  • Docker dan Docker Compose (opsional)

Instalasi

Menggunakan Docker

Cara termudah untuk menjalankan aplikasi adalah dengan Docker Compose:

# Clone repositori
git clone https://github.com/yourusername/python-fastapi-blog-api.git
cd python-fastapi-blog-api

# Jalankan dengan Docker Compose
docker-compose up -d

Aplikasi akan tersedia di http://localhost:8000

Instalasi Manual

# Clone repositori
git clone https://github.com/yourusername/python-fastapi-blog-api.git
cd python-fastapi-blog-api

# Buat virtual environment
python -m venv venv
source venv/bin/activate  # Untuk Linux/Mac
# atau
venv\Scripts\activate  # Untuk Windows

# Install dependensi
pip install -r requirements.txt

# Siapkan variabel lingkungan
export DATABASE_URL=postgresql://user:password@localhost:5432/blog
export SECRET_KEY=your-secret-key
export ALGORITHM=HS256
export ACCESS_TOKEN_EXPIRE_MINUTES=30
export MEDIA_ROOT=./media

# Jalankan aplikasi
uvicorn app.main:app --reload

Struktur Proyek

python-fastapi-blog-api/
├── app/
│   ├── api/
│   │   ├── deps.py           # Dependency injection
│   │   └── v1/               # API endpoints
│   ├── core/                 # Konfigurasi aplikasi
│   ├── crud/                 # CRUD operations
│   ├── db/                   # Database setup
│   ├── models/               # SQLAlchemy models
│   ├── schemas/              # Pydantic schemas
│   ├── tests/                # Unit tests
│   ├── utils/                # Utility functions
│   └── main.py               # FastAPI application
├── media/                    # Media uploads
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
└── README.md

Dokumentasi API

Dokumentasi API tersedia di:

Endpoint API

Autentikasi

  • POST /api/v1/auth/register - Registrasi pengguna baru
  • POST /api/v1/auth/login - Login dan dapatkan token JWT
  • POST /api/v1/auth/password-reset-request - Minta reset password
  • POST /api/v1/auth/password-reset - Reset password

Pengguna

  • GET /api/v1/users/ - Daftar semua pengguna (admin)
  • POST /api/v1/users/ - Buat pengguna baru (admin)
  • GET /api/v1/users/{user_id} - Detail pengguna
  • PUT /api/v1/users/{user_id} - Update pengguna
  • DELETE /api/v1/users/{user_id} - Hapus pengguna

Artikel (Post)

  • GET /api/v1/posts/ - Daftar semua artikel
  • POST /api/v1/posts/ - Buat artikel baru
  • GET /api/v1/posts/{post_id} - Detail artikel
  • PUT /api/v1/posts/{post_id} - Update artikel
  • DELETE /api/v1/posts/{post_id} - Hapus artikel
  • POST /api/v1/posts/{post_id}/thumbnail - Upload thumbnail
  • DELETE /api/v1/posts/{post_id}/thumbnail - Hapus thumbnail

Endpoint Publik

  • GET /api/v1/posts/public/ - Daftar artikel yang dipublikasikan
  • GET /api/v1/posts/public/{post_id} - Detail artikel yang dipublikasikan
  • GET /api/v1/posts/public/slug/{slug} - Detail artikel berdasarkan slug

Komentar

  • GET /api/v1/comments/ - Daftar semua komentar
  • POST /api/v1/comments/ - Buat komentar baru
  • GET /api/v1/comments/{comment_id} - Detail komentar
  • PUT /api/v1/comments/{comment_id} - Update komentar
  • DELETE /api/v1/comments/{comment_id} - Hapus komentar
  • POST /api/v1/comments/{comment_id}/approve - Setujui komentar (admin)
  • GET /api/v1/comments/public/post/{post_id} - Daftar komentar yang disetujui untuk artikel
  • POST /api/v1/comments/public/ - Buat komentar anonim

Menjalankan Test

# Jalankan semua test
pytest

# Jalankan test dengan coverage
pytest --cov=app

Lisensi

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published