Proyek Akhir: Todo API Lengkap
Merangkai semua bagian: CRUD, validasi, logging, dan recover menjadi satu Todo API utuh.
Saatnya merangkai
Kamu sudah membuat semua potongan: handler CRUD (bab 6–9), validasi (bab 8), middleware (bab 11–13), dan struktur (bab 15). Di bab ini semuanya disatukan menjadi satu program Todo API yang utuh.
Peta route
| Route | Handler | Hasil sukses |
|---|---|---|
GET /todos | List | 200 |
POST /todos | Create | 201 |
GET /todos/{id} | GetByID | 200 |
PUT /todos/{id} | Update | 200 |
DELETE /todos/{id} | Delete | 204 |
Urutan perakitan di main
- Buat
storedanapi := &API{store: store}. - Buat
mux, daftarkan lima route. - Bungkus dengan middleware:
handler := Logging(Recover(mux))— request melewati Logging, lalu Recover, lalu mux. - Berikan
handlerke server:http.ListenAndServe(":8080", handler).
Menjalankan di komputermu
Salin kode solusi ke main.go, ganti bagian simulasi di main dengan:
log.Println("Todo API di http://localhost:8080")
log.Fatal(http.ListenAndServe(":8080", handler))
Lalu coba dengan curl:
curl -X POST localhost:8080/todos -d '{"title":"Belajar Go"}'
curl localhost:8080/todos
curl -X PUT localhost:8080/todos/1 -d '{"title":"Belajar Go","done":true}'
curl -X DELETE localhost:8080/todos/1
Langkah berikutnya
- Ganti
Storedengan database (PostgreSQL +database/sql) lewat interface repository bab 15. - Tambahkan autentikasi yang lebih kuat (JWT) menggantikan API key.
- Pasang pengujian otomatis (
go test) untuk setiap endpoint. - Bungkus dengan Docker lalu deploy.