M
Mr Sugiarto
Developer
07 Sep 2026 4 min read

Sampai di part terakhir seri Tutorial GoFiber Dasar. Selamat — kalau sudah mengikuti dari Part 1, sekarang ada REST API blog yang lengkap: routing, database, validasi, autentikasi JWT, otorisasi berbasis kepemilikan dan role, upload file, testing otomatis, dokumentasi API, sampai siap di-deploy pakai Docker.

Apa yang Sudah Dibangun

Area Fitur
Dasar Routing, handler pattern, koneksi MySQL lewat GORM
Data Model Post, migration, seeder dengan data dummy
CRUD Create, Read, Update, Delete Post lengkap dengan validasi
Developer Experience Hot reload (Air), response standarisasi, error handling terpusat
Autentikasi Register, login, JWT access token, refresh token dengan rotasi, logout
Otorisasi Middleware proteksi route, kepemilikan post (author), role admin vs user
Relasi Data Post-User (author), Post-Category (many-to-many)
File Upload thumbnail dengan validasi tipe & ukuran
Kualitas Unit test, feature test end-to-end, dokumentasi Swagger/OpenAPI
Deploy Docker multi-stage build, Docker Compose, panduan VPS

Keputusan Desain yang Perlu Diingat

Beberapa keputusan penting yang dibuat sepanjang seri ini, dengan alasannya:

  • Access token pendek (15 menit) + refresh token (7 hari, dengan rotasi) — membatasi dampak kalau access token bocor, sementara user tidak perlu login ulang terus-menerus. Refresh token disimpan sebagai hash SHA-256 di database, bukan string mentah.
  • jwt.WithValidMethods di setiap parsing JWT — mencegah serangan algorithm confusion. Ini ditemukan dan diperbaiki lewat review keamanan di tengah proses, bukan direncanakan sejak awal — bukti bahwa security review berkelanjutan itu penting, bukan cuma sekali di akhir.
  • Kepemilikan (ownership) dipisah dari role — user biasa cuma bisa mengubah/menghapus resource miliknya sendiri; admin punya hak override terbatas (menghapus post siapa saja), bukan hak tak terbatas (tidak bisa mengedit isi post orang lain).
  • Preload dengan kolom terbatas (publicAuthorColumns) untuk data yang tampil di endpoint publik — prinsip jangan expose lebih dari yang dibutuhkan, walau field itu sudah "aman" secara teknis (bukan password).
  • Database test terpisah dari database development — supaya proses testing yang menghapus/mengubah data tidak pernah menyentuh data development yang sedang dipakai untuk demo manual.

Keterbatasan yang Disengaja (di Luar Scope "Dasar")

Seri ini fokus ke fundamental, bukan API production yang lengkap segala fitur. Beberapa hal yang sengaja tidak dibahas:

  • Blacklist access token — logout hanya mencabut refresh token; access token yang sudah terbit tetap valid sampai kadaluarsa (maksimal 15 menit), karena JWT stateless.
  • Rate limiting — endpoint seperti login rawan brute-force di dunia nyata, butuh pembatasan request per-IP.
  • Caching — endpoint list/search yang sering diakses biasanya butuh cache (Redis, dsb) di scale besar.
  • Background job/queue — untuk tugas yang tidak perlu selesai langsung dalam satu request (kirim email, resize gambar, dst).
  • Fitur komunitas — komentar, like, follow antar user, notifikasi.
  • CI/CD otomatisgo test ./... sudah ada, tapi belum terhubung ke pipeline otomatis (GitHub Actions, dst) yang jalan tiap push.

Struktur Project untuk Referensi

blogfiber/
├── main.go              # entry point, wiring semua komponen
├── auth/                # JWT & refresh token helper
├── database/             # koneksi & migration
├── handlers/              # HTTP handler per resource (posts, auth, categories)
├── middleware/            # AuthRequired, AdminOnly
├── models/                # struct GORM (Post, User, Category, RefreshToken)
├── response/               # helper format response seragam
├── routes/                 # route registration
├── validation/              # validator reusable
├── cmd/seed/                # seeder terpisah dari server utama
├── docs/                     # dokumentasi Swagger (generated, jangan edit manual)
├── public/uploads/            # file yang di-upload user
├── Dockerfile & docker-compose.yml
└── main_test.go, posts_feature_test.go  # feature test

Melanjutkan dari Sini

Kalau ingin melangkah lebih jauh dari seri "Dasar" ini, beberapa arah yang bisa dieksplorasi:

  • Tambahkan rate limiting (github.com/gofiber/fiber/v2/middleware/limiter, sudah bawaan Fiber).
  • Pindahkan upload file dari disk lokal ke object storage (S3-compatible) supaya tidak terikat ke satu server.
  • Terapkan caching di endpoint Index/Show yang sering diakses.
  • Tambahkan CI (GitHub Actions) yang menjalankan go test ./... otomatis di setiap pull request.

Terima kasih sudah mengikuti seri Tutorial GoFiber Dasar ini sampai akhir. Source code lengkap tersedia di setiap branch/commit per part, jadi bisa dibandingkan progress kode antar part kapan saja.

M
Mr Sugiarto

Developer

Bagian dari Series: GoFiber Dasar - Belajar Fundamental Lewat REST API Blog

Belajar konsep-konsep dasar GoFiber (routing, handler, GORM, MySQL, JWT auth) dengan membangun REST API blog sederhana dari nol - lengkap dengan auten...

Lihat Series Lengkap