Section API Development telah membedah tiap komponen secara terpisah: model Pydantic, status code, dependency injection, sampai testing dengan TestClient. Sekarang kita merangkainya menjadi satu proyek utuh yang bisa dipakai orang lain: REST API manajemen tugas — API yang menyimpan daftar tugas, menerima tugas baru, menandai tugas selesai, dan menghapus tugas, lengkap dari struktur proyek sampai image Docker.

API yang Akan Kita Bangun #

Satu tugas hanya punya tiga field: id, judul, dan selesai. Kesederhanaan ini disengaja agar fokus kita tetap pada alur kerja REST, bukan pada kompleksitas domain. Kontrak endpoint-nya:

MetodePathFungsiStatus sukses
GET/healthCek kesehatan service200
GET/tugasDaftar seluruh tugas200
POST/tugasBuat tugas baru201
GET/tugas/{id}Ambil satu tugas200
PATCH/tugas/{id}Perbarui sebagian field200
DELETE/tugas/{id}Hapus satu tugas204

Seluruh kode sumber tiap tahap tersedia pada bagian Berkas Sumber di bawah halaman setiap bagian. Proyek dibangun bertahap, sehingga setiap bagian berisi berkas yang berubah pada tahap tersebut saja.

Perilaku yang Diharapkan #

Sebelum menulis kode, mari kita tetapkan dulu hasil akhir yang dituju. Sesi berikut adalah percakapan sesungguhnya dengan API yang akan kita bangun — klien mengirim satu tugas lewat POST, lalu membaca kembali seluruh daftarnya:

bash
curl -X POST http://127.0.0.1:8000/tugas \
    -H "Content-Type: application/json" \
    -d '{"judul": "Belajar FastAPI"}'
curl http://127.0.0.1:8000/tugas

Output yang Dihasilkan:

text
{"id":1,"judul":"Belajar FastAPI","selesai":false}
[{"id":1,"judul":"Belajar FastAPI","selesai":false}]

Tugas baru selalu lahir dengan selesai bernilai false; id ditetapkan oleh server, bukan oleh klien. Seluruh data tersimpan di berkas tugas.db, sehingga daftar tugas bertahan melewati restart.

Teknologi dan Prasyarat #

Kita memakai empat komponen yang semuanya sudah dibahas di chapter teori:

  • FastAPI sebagai framework — materi chapter Membuat API dengan FastAPI,
  • SQLite dari standard library sebagai penyimpanan — chapter SQLite dengan Python dan CRUD dengan SQLite,
  • pytest bersama TestClient sebagai alat uji — chapter API Testing,
  • Docker sebagai cara mengemas aplikasi — chapter Containerization dengan Docker.

Siapkan juga virtual environment aktif seperti pada chapter Membuat Virtual Environment; semua perintah pada proyek ini dijalankan dari direktori root proyek.

Tahapan Pengerjaan #

Proyek dikerjakan dalam enam bagian berurutan. Setiap bagian diakhiri dengan aplikasi yang tetap bisa dijalankan:

  1. Bagian 1: Fondasi API — struktur proyek, pyproject.toml, aplikasi minimal, dan cara menjalankannya.
  2. Bagian 2: Request dan Response — model Pydantic serta endpoint POST, GET per id, dan DELETE dengan penyimpanan in-memory.
  3. Bagian 3: Persistensi Database — penggantian penyimpanan in-memory dengan SQLite.
  4. Bagian 4: Validasi dan Error Handling — status 404, 422, 400, dan pembaruan parsial lewat PATCH.
  5. Bagian 5: Testing API — berkas test pytest dengan database terisolasi.
  6. Bagian 6: Konfigurasi dan Deployment — environment variable, dependensi terkunci, dan Dockerfile.

Mulailah dari Bagian 1 dan pertahankan urutannya: setiap bagian membangun di atas berkas dari bagian sebelumnya.