Ini adalah aplikasi API sederhana yang dibangun menggunakan FastAPI dan MySQL untuk melakukan operasi CRUD (Create, Read, Update, Delete) pada data nutrisi makanan.
Proyek ini menggunakan SQLAlchemy sebagai ORM, Pydantic untuk validasi data, dan Alembic untuk migrasi database.
Sebelum memulai, pastikan Anda sudah menginstal:
- Python 3.8+
- MySQL Server
Ikuti langkah-langkah berikut untuk menyiapkan dan menjalankan proyek ini di komputer Anda.
Unduh atau clone repositori ini ke mesin lokal Anda.
# Contoh jika menggunakan git
git clone <url-repositori-anda>
cd fastapi_mysql_nutritionSangat disarankan untuk menggunakan virtual environment agar dependensi proyek tidak tercampur dengan proyek lain.
# Buat virtual environment
python -m venv .venv
# Aktifkan virtual environment
# Windows:
# .venv\Scripts\activate
# macOS/Linux:
# source .venv/bin/activateInstal semua library Python yang dibutuhkan yang ada di file requirements.txt.
pip install -r requirements.txta. Buat Database di MySQL Masuk ke MySQL client Anda dan buat database baru.
CREATE DATABASE food_nutrition_db;b. Buat File .env
Salin file .env.example (jika ada) atau buat file baru bernama .env di direktori utama. Isi file tersebut dengan URL koneksi ke database MySQL Anda.
# Isi file .env
# Ganti 'user', 'password', dan 'host' sesuai dengan konfigurasi MySQL Anda.
# Format: mysql+pymysql://<DB_USER>:<DB_PASSWORD>@<DB_HOST>/<DB_NAME>
DATABASE_URL="mysql+pymysql://root:password_anda@localhost/food_nutrition_db"Penting: Jika password Anda mengandung karakter spesial (contoh:
!@#$%^&*()), Anda harus melakukan URL-encode pada karakter tersebut.
Proyek ini menggunakan Alembic untuk mengelola skema database. Jalankan perintah berikut untuk membuat tabel foods di database Anda.
a. Konfigurasi alembic.ini
Pastikan file alembic.ini sudah berisi URL database yang benar.
# di dalam alembic.ini
sqlalchemy.url = mysql+pymysql://root:password_anda@localhost/food_nutrition_dbPenting: Jika password Anda di-encode (misal
!menjadi%21), Anda harus mengubahnya lagi menjadi%%21di file ini karena karakter%dianggap spesial oleh file.ini.
b. Terapkan Migrasi Jalankan perintah ini dari direktori utama proyek.
alembic upgrade headSetelah semua langkah di atas selesai, jalankan server FastAPI menggunakan Uvicorn.
uvicorn app.main:app --reloadapp.main:appmerujuk ke objekappdi dalam fileapp/main.py.--reloadmembuat server otomatis restart setiap kali ada perubahan pada kode.
Aplikasi Anda sekarang berjalan. Buka browser dan kunjungi:
Anda akan melihat dokumentasi interaktif (Swagger UI) di mana Anda bisa mencoba semua endpoint API yang telah dibuat.