0Pricing
Go Academy · Pelajaran

Mengatur Batas Waktu dan Header

Batas waktu client, header khusus, dan token autentikasi

Mengatur Batas Waktu dan Header adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.

Batas waktu tingkat klien

Tetapkan http.Client.Timeout untuk membatasi total waktu permintaan+respons. Ini adalah batas waktu yang paling mudah dikonfigurasi.

client := &http.Client{Timeout: 10 * time.Second}

Batas waktu tingkat transportasi

Sesuaikan waktu tunggu pembuatan koneksi dan jabat tangan TLS melalui http.Transport:

t := &http.Transport{
    DialContext: (&net.Dialer{
        Timeout:   5 * time.Second,
        KeepAlive: 30 * time.Second,
    }).DialContext,
    TLSHandshakeTimeout:   5 * time.Second,
    ResponseHeaderTimeout: 5 * time.Second,
}
client := &http.Client{Transport: t, Timeout: 30 * time.Second}

Batas waktu berbasis konteks

Batas waktu konteks berlaku per permintaan dan diteruskan ke panggilan di hilir. Batas waktu tersebut membatalkan permintaan saat tenggat tercapai.

ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
req, _ := http.NewRequestWithContext(ctx, "GET", url, nil)

Menetapkan tajuk permintaan

Tambahkan tajuk ke permintaan dengan req.Header.Set (mengganti) atau req.Header.Add (menambahkan):

req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("Accept", "application/json")
req.Header.Set("X-Request-ID", requestID)

Tajuk umum

Content-Type untuk isi permintaan; Accept untuk format respons yang diinginkan; Authorization untuk token autentikasi; User-Agent untuk identifikasi klien.

Membaca tajuk respons

Baca tajuk respons dari resp.Header.Get(key):

contentType := resp.Header.Get("Content-Type")
retryAfter := resp.Header.Get("Retry-After")

Batas waktu koneksi menganggur

Tetapkan IdleConnTimeout pada transportasi untuk menutup koneksi yang menganggur, sehingga mencegah penumpukan saat lalu lintas menurun.

t.IdleConnTimeout = 90 * time.Second
t.MaxIdleConnsPerHost = 10

Konfigurasi TLS

Sesuaikan TLS (versi minimum, sertifikat klien) melalui tls.Config pada transportasi:

t.TLSClientConfig = &tls.Config{MinVersion: tls.VersionTLS12}

Mendeteksi galat batas waktu

Bedakan galat batas waktu dari galat jaringan menggunakan errors.As:

var urlErr *url.Error
if errors.As(err, &urlErr) && urlErr.Timeout() {
    // handle timeout
}

Batas waktu per permintaan dibandingkan klien

Client.Timeout berlaku untuk setiap permintaan. Batas waktu konteks berlaku per permintaan dan dapat lebih singkat daripada batas waktu klien. Keduanya dipatuhi — yang lebih singkat akan berlaku.

Menonaktifkan koneksi tetap aktif

Tetapkan DisableKeepAlives: true pada transportasi untuk program berumur pendek yang membuka sedikit koneksi, sehingga menghindari overhead pengumpulan koneksi.

Pemeriksaan Singkat

Ketika http.Client.Timeout dan batas waktu konteks sama-sama ditetapkan, mana yang berlaku?

Ringkasan: Batas Waktu dan Header

Poin penting:

  • client.Timeout: batas waktu total per permintaan
  • context.WithTimeout: batas waktu yang dapat dibatalkan dan diteruskan
  • req.Header.Set untuk header khusus
  • Transport untuk batas waktu TLS, penyambungan, dan waktu tidak aktif yang lebih terperinci

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mengatur Batas Waktu dan Header” gratis?

Ya — teks lengkap “Mengatur Batas Waktu dan Header” 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 “Mengatur Batas Waktu dan Header”?

Batas waktu client, header khusus, dan token autentikasi 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 2 dari 4.

Berapa lama pelajaran “Mengatur Batas Waktu dan Header” 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 Permintaan HTTP
  2. Mengatur Batas Waktu dan Header
  3. Menguraikan Respons JSON
  4. Penanganan Error dan Logika Percobaan Ulang
← Kembali ke Go Academy