REST API adalah fondasi utama dalam pengembangan backend modern. Hampir semua aplikasi—baik mobile, web, maupun IoT—menggunakan REST API untuk berkomunikasi antara client dan server. Dengan REST API, data dapat dikirim dalam format ringan seperti JSON, sehingga lebih cepat dan efisien.
Golang menjadi salah satu bahasa terbaik untuk membangun REST API karena performanya tinggi, concurrency kuat, dan sintaks yang sederhana. Dalam artikel ini, kita akan membahas konsep REST API hingga implementasi langsung menggunakan Golang.
Apa itu REST API?
REST (Representational State Transfer) adalah gaya arsitektur yang digunakan untuk membangun API berbasis HTTP. REST menggunakan method standar seperti GET, POST, PUT, dan DELETE untuk melakukan operasi terhadap resource.
- GET → mengambil data
- POST → membuat data baru
- PUT → update data
- DELETE → menghapus data
Setiap endpoint dalam REST API biasanya merepresentasikan resource, misalnya /users, /products, atau /orders.
Setup Project Golang
Pertama, buat project baru dan inisialisasi module Go:
mkdir rest-api-golang
cd rest-api-golang
go mod init rest-api-golang
Membuat HTTP Server Sederhana
Golang memiliki package bawaan net/http yang bisa langsung digunakan untuk membuat server tanpa framework tambahan.
package main
import (
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("API Running 🚀"))
})
log.Println("Server running on :8080")
http.ListenAndServe(":8080", nil)
}
Membuat Endpoint REST API
Sekarang kita buat endpoint sederhana untuk resource users:
http.HandleFunc("/api/users", func(w http.ResponseWriter, r *http.Request) {
if r.Method == http.MethodGet {
w.Write([]byte("Get Users"))
} else if r.Method == http.MethodPost {
w.Write([]byte("Create User"))
}
})
Handling JSON Request & Response
Dalam REST API, data biasanya dikirim dalam format JSON. Golang menyediakan encoding/json untuk mempermudah proses ini.
import "encoding/json"
type User struct {
Name string `json:"name"`
Email string `json:"email"`
}
func CreateUser(w http.ResponseWriter, r *http.Request) {
var user User
err := json.NewDecoder(r.Body).Decode(&user)
if err != nil {
http.Error(w, err.Error(), 400)
return
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(user)
}
Struktur Routing yang Lebih Rapi
Untuk project yang lebih besar, sebaiknya pisahkan handler ke file terpisah agar kode lebih maintainable.
func RegisterRoutes() {
http.HandleFunc("/api/users", GetUsers)
http.HandleFunc("/api/users/create", CreateUser)
}
Best Practice Error Handling
- Selalu cek error dari request body
- Gunakan http.Error untuk response error
- Gunakan status code yang sesuai (400, 404, 500)
- Jangan expose error sensitif ke client
Kenapa Golang Cocok untuk REST API?
- High performance (compiled language)
- Built-in concurrency (goroutine)
- Low memory usage
- Standard library lengkap
Kesimpulan
Membangun REST API dengan Golang sangat efisien dan cepat. Dengan hanya menggunakan standard library, Anda sudah bisa membuat API yang powerful. Untuk skala besar, Anda bisa menggunakan framework seperti Gin atau Fiber untuk meningkatkan produktivitas.