Backend

Belajar REST API Golang untuk Pemula

Panduan lengkap membuat REST API menggunakan Golang dari nol hingga production.

Rama Mai02 Okt 20238 min read

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.