Server Pertama: http.ServeMux & ListenAndServe
Menyiapkan proyek Go, mendaftarkan handler ke alamat, dan menjalankan server sungguhan.
Menyiapkan proyek
Pastikan Go terpasang (go version), lalu buat folder proyek:
mkdir todo-api
cd todo-api
go mod init todo-api # membuat go.mod (identitas modul/proyek)
touch main.go
go.mod mencatat nama proyek dan versi Go. Untuk kursus ini kita tidak butuh library pihak ketiga — semuanya dari pustaka standar.
Server paling sederhana
package main
import (
"fmt"
"log"
"net/http"
)
func Hello(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Halo dari server Go!")
}
func main() {
mux := http.NewServeMux() // 1. buat "papan petunjuk" alamat
mux.HandleFunc("/hello", Hello) // 2. alamat /hello ditangani Hello
log.Println("Server jalan di http://localhost:8080")
log.Fatal(http.ListenAndServe(":8080", mux)) // 3. buka port 8080
}
Jalankan dengan go run ., lalu di terminal lain coba:
curl -i http://localhost:8080/hello
HTTP/1.1 200 OK
Halo dari server Go!
Tiga bagian penting
http.NewServeMux()— router: daftar "alamat → handler". Saat request masuk, mux mencocokkan alamatnya lalu memanggil handler yang tepat.mux.HandleFunc(alamat, handler)— mendaftarkan satu pasangan alamat + handler.http.ListenAndServe(":8080", mux)— membuka port dan menunggu request tanpa henti. Karena tidak pernah selesai (kecuali error), ia dibungkuslog.Fatalagar error-nya tercetak.
Alamat yang tidak terdaftar
Jika request datang ke alamat yang tidak ada di mux, Go otomatis menjawab 404 dengan isi 404 page not found. Kita tidak perlu menulis apa-apa untuk itu.
Catatan untuk latihan
Di kotak latihan, ListenAndServe tidak dipakai (tidak ada port yang bisa dibuka). Sebagai gantinya, kita memanggil mux langsung lewat fungsi call yang sudah disediakan. Untuk handler dan mux, hasilnya sama persis dengan server sungguhan — salin kodenya ke komputermu dan tambahkan ListenAndServe untuk mencobanya.