0Pricing
Go Academy · Pelajaran

Membuat Server HTTP

ListenAndServe, HandlerFunc, dan ServeMux

Membuat Server HTTP adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

Paket net/http

Pustaka standar Go, net/http, menyediakan peladen HTTP/1.1 dan HTTP/2 yang siap digunakan di produksi tanpa dependensi eksternal.

Peladen dasar

Daftarkan penangan dengan http.HandleFunc dan mulai mendengarkan dengan http.ListenAndServe:

http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "Hello, World!")
})
log.Fatal(http.ListenAndServe(":8080", nil))

Antarmuka http.Handler

Setiap tipe yang mengimplementasikan ServeHTTP(ResponseWriter, *Request) adalah http.Handler. Gunakan ini untuk penangan yang menyimpan keadaan, seperti basis data atau konfigurasi.

type App struct{ db *sql.DB }

func (a *App) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    // use a.db
}

ServeMux

http.NewServeMux() membuat perute terisolasi. Teruskan perute tersebut ke http.ListenAndServe untuk menghindari mux bawaan global, yang lebih aman dalam pustaka.

mux := http.NewServeMux()
mux.HandleFunc("/api/users", usersHandler)
http.ListenAndServe(":8080", mux)

Mengirim respons dengan kode status

Tulis kode status dengan w.WriteHeader(code) sebelum menulis isi respons. Jika Anda hanya memanggil w.Write, statusnya secara bawaan adalah 200.

w.WriteHeader(http.StatusCreated)
w.Write([]byte("created"))

Menulis respons JSON

Tetapkan Content-Type sebelum menulis isi respons, lalu enkode dengan json.Encoder:

w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(data)

Membaca permintaan

Akses metode, URL, tajuk, parameter kueri, dan isi melalui struktur *Request.

r.Method          // "GET", "POST", ...
r.URL.Path        // "/api/users"
r.URL.Query().Get("id") // query param
r.Header.Get("Authorization")

Mengurai isi permintaan JSON

Dekode isi permintaan dengan json.Decoder. Batasi ukuran isi dengan http.MaxBytesReader untuk mencegah kehabisan memori.

r.Body = http.MaxBytesReader(w, r.Body, 1<<20)
var req CreateUserRequest
json.NewDecoder(r.Body).Decode(&req)

Konfigurasi peladen

Konfigurasikan batas waktu dengan http.Server khusus untuk mencegah serangan dari klien lambat:

srv := &http.Server{
    Addr:         ":8080",
    Handler:      mux,
    ReadTimeout:  5 * time.Second,
    WriteTimeout: 10 * time.Second,
    IdleTimeout:  120 * time.Second,
}
srv.ListenAndServe()

HTTPS

Gunakan srv.ListenAndServeTLS(certFile, keyFile) untuk menyediakan HTTPS. Sertifikat dapat ditandatangani sendiri (pengembangan) atau diperoleh dari Let's Encrypt (produksi melalui golang.org/x/crypto/acme/autocert).

Komposisi penangan

Bungkus penangan untuk menambahkan perhatian lintas fungsi (pencatatan, autentikasi, pemulihan) tanpa mengubah logika bisnis. Kembalikan penangan berikutnya setelah dimodifikasi.

Pemeriksaan Singkat

Mengapa Anda harus menetapkan ReadTimeout dan WriteTimeout pada http.Server?

Rangkuman: Membuat Peladen HTTP

Poin penting:

  • HandleFunc + ListenAndServe untuk peladen sederhana
  • http.Server khusus dengan batas waktu untuk produksi
  • ServeMux untuk perutean terisolasi
  • json.NewEncoder(w) untuk respons JSON

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Membuat Server HTTP” gratis?

Ya — teks lengkap “Membuat Server HTTP” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Membuat Server HTTP”?

ListenAndServe, HandlerFunc, dan ServeMux Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Membuat Server HTTP” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Membuat Server HTTP
  2. Perutean dan Parameter Path
  3. Pola Middleware
  4. Penghentian yang Anggun
← Kembali ke Go Academy